1

私はこのための正規表現を書き込もうとしていましたが、これまでのところ成功しませんでした。

_ any thing\_ fdfdf \_ any thing_

_までの任意の文字にアンダースコアを付けます。

\_はエスケープ文字であるため、正規表現はこのような文字列を受け入れる必要があります。

_ any \_ thing _

次の文字列:

checking_ happens \_ ano\_ther _ test of bold _ and escape \_asteric

与える必要があります:

_ happens \_ ano\_ther _

これまでのところ、私はこれを思い付くことができるだけです:

(\\_)|_[^_]*[\\_]*[_]
4

1 に答える 1

2

これは仕事をします:

(?<!\\)(?:\\\\)*_((?:[^_\\]|\\.)+)_

それを分割する:

  • (?<!\\)(?:\\\\)*-より多くの円記号が前に付いていない偶数の円記号に一致します
  • _-アンダースコアが続きます
  • ((?:[^_\\]|\\.)+)-次の1回以上一致する
    • [^_\\]-アンダースコアまたはバックスラッシュを除くすべての文字
    • \\.-バックスラッシュ/文字のペア(例\_または\\
  • _-末尾の下線を一致させます

これにより、最初のグループのアンダースコア間の文字列がキャプチャされます。

于 2012-05-23T10:02:02.463 に答える