首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配“b(一二、三、一、二、二、三)\b”,重复次数最少

匹配“b(一二、三、一、二、二、三)\b”,重复次数最少
EN

Stack Overflow用户
提问于 2013-09-17 14:59:31
回答 2查看 163关注 0票数 1

我只使用PCRE实现了这一点,但我也希望它能够与Javascript的RegExp一起工作。那样的话,大王就很丑了。还有其他更明智的方法来完成这个任务吗?

请注意,虽然主题是"OneTwoThree",但我使用"qwe“来表示简洁。

代码语言:javascript
复制
$ 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

(只有前三个应该匹配。)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-17 15:03:50

类似这样的内容将适用于您的样本数据:

代码语言:javascript
复制
/\b(qwe?|we)\b/
/\b(q?we|qw)\b/

你可以测试这里

但是,对于标题中指定的完整模式,它将是

代码语言:javascript
复制
/\b(OneTwo(Three)?|TwoThree)\b/
/\b((One)?TwoThree|OneTwo)\b/

现在,这并不是更易读,但它确实稍微减少了冗余:

代码语言:javascript
复制
/\b(?!w\b)q?we?\b/

您可以测试这里

或者你的整个模式:

代码语言:javascript
复制
/\b(?!Two\b)(One)?Two(Three)?\b/
票数 4
EN

Stack Overflow用户

发布于 2013-09-17 18:15:25

也许这个但不确定-

代码语言:javascript
复制
 # \b(?=..)q?we?\b

 \b 
 (?= . . )
 q? w e? 
 \b 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18853278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档