1

私はこれを PCRE のみで管理しましたが、Javascript の RegExp でも同様に動作するようにしたいと考えています。それと、正規表現は醜いです。これを達成するための他のより健全な方法はありますか?

トピックには「OneTwoThree」と書かれていますが、簡潔にするために「qwe」を使用していることに注意してください。

$ cat test.txt | grep -oP '\b(q(\g<we>|\g<w>)|(?<we>(?<w>w)e))\b'
qwe
qw
we

ファイル test.txt には以下が含まれます。

qwe qw we q w e qq qe wq ww eq ew ee qqq qqw qqe qwq qww qeq qew qee wqq wqw wqe wwq www wwe weq wew wee eqq eqw eqe ewq eww ewe eeq eew eee

(最初の 3 つだけが一致する必要があります。)

4

2 に答える 2

4

次のようなものがサンプル データに対して機能します。

/\b(qwe?|we)\b/
/\b(q?we|qw)\b/

ここでテストできます。

しかし、タイトルで指定した完全なパターンでは、

/\b(OneTwo(Three)?|TwoThree)\b/
/\b((One)?TwoThree|OneTwo)\b/

さて、これは読みやすくはありませんが、冗長性をわずかに減らします:

/\b(?!w\b)q?we?\b/

ここでテストできるもの

または完全なパターンの場合:

/\b(?!Two\b)(One)?Two(Three)?\b/
于 2013-09-17T15:03:50.323 に答える
0

これかもしれませんが、確かではありません -

 # \b(?=..)q?we?\b

 \b 
 (?= . . )
 q? w e? 
 \b 
于 2013-09-17T18:15:25.123 に答える