我只使用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
(只有前三个应该匹配。)
发布于 2013-09-17 15:03:50
类似这样的内容将适用于您的样本数据:
/\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-17 18:15:25
也许这个但不确定-
# \b(?=..)q?we?\b
\b
(?= . . )
q? w e?
\b https://stackoverflow.com/questions/18853278
复制相似问题