正規表現におけるループの簡単な応用例【JAVAベース】


本論文の例は、正規表現におけるループの簡単な応用を述べている。皆さんに参考にしてあげます。具体的には以下の通りです。
開発作業では、テキスト中の内容をフィルタリングし、不要なものや要求に合わないものを削除または置換する必要があります。そこで一つの問題を発見しました。ある種の工程的なテキストには、多くの英語で同じ書き方が使われていますが、意味の異なる単位は、それぞれ本当の意味に対応する漢字に変えなければなりません。例えば、「粘度は17 sで、移動距離は350 cmで、コンクリートには内部实外光が必要です。プレイ時間は30 sです。明らかに第一sは粘度の単位であり、第二sは時間単位であり、現在はテキスト中の時間を表すsをすべて「秒」に置き換える必要があり、友達の案内の下で、正規表現におけるループを通してこの機能を実現することができます。
正規表現の中のループは位置情報に基づいてマッチングするという基本原理が定評されています。ターゲット文字のコンテキストによってもマッチすると考えられます。
具体的なJavaコードは以下の通りです。

package ccnu;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
public class regex {
  /**
   * @param args
   */
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    String tempHtmlString="   17s,     350  ,           。     30s。";
    Pattern p_html;
    Matcher m_html;
    String regEx = "([^  ][u4e00-u9fa5]{1,10}(?<=[0-9]))s([^a-z]$)";
    p_html = Pattern.compile(regEx);
    m_html = p_html.matcher(tempHtmlString);
    String resultString="";
    try {
      resultString = m_html.replaceAll("$1 ");
    } catch (PatternSyntaxException ex) {
      // Syntax error in the regular expression
    } catch (IllegalArgumentException ex) {
      // Syntax error in the replacement text (unescaped $ signs?)
    } catch (IndexOutOfBoundsException ex) {
      // Non-existent backreference used the replacement text
    }
    System.out.println(resultString);
  }
}

粘度は17 sで、移動距離は350 cmで、コンクリートには内部实外光が必要です。プレイ時間は30秒です。
PS:ここでもう2つの非常に便利な正規表現ツールを提供します。
JavaScript正規表現はオンラインテストツールです。
http://tools.jb51.net/regex/javascript
正規表現のオンライン作成ツール:
http://tools.jb51.net/regex/create_reg
本論文で述べたように、皆さんの正規表現学習に役に立ちます。