【问题标题】:Match a word if there a specific word in the sentence before如果之前的句子中有特定的单词,则匹配一个单词
【发布时间】:2018-08-31 19:56:16
【问题描述】:

如果句子中前面有特定的单词,我想匹配一个单词,例如:

test1 foo test2 条

如果foo 在句子之前(和/或bar 之后)的句子中,我想匹配bar

我试过了:

(?<=(foo ([\w ]+)(?= bar)))bar

但不起作用,正则表达式不正确,因为 + inlookbehind...

你能帮帮我吗,谢谢

【问题讨论】:

标签: regex


【解决方案1】:

如果您必须使用一个正则表达式,您只需将[\w ]+ 移出lookbehind。然后使用交替查找单词 bar(单独,而不是作为另一个单词的一部分),后跟 foo:

((?<=foo)[\w ]+\bbar\b|\bbar\b[\w ]+(?=foo))

Regex101 demo

【讨论】:

  • 这个正则表达式匹配任何带有bar的单词,如果之前有单词foo,我会只匹配bar,我不知道它是否真的可能
  • 嗨,约翰,很抱歉。我已经修改了正则表达式,因此它只会将 bar 作为一个词单独匹配。查看我的编辑
  • 这个正则表达式将匹配“foo”之后的每个单词和空格,我认为它更像是:(?
  • 你实际上想匹配什么? foo这个词?还是酒吧?或者 ???或者只是查看当 bar 在带有 foo 的字符串中时模式是否匹配,在这种情况下,它实际匹配的内容并不重要。
  • 其实我没有看到@booble气泡的答案,但是是这样的(如果句子中有“foo”则匹配“bar”):regex101.com/r/FUwwdj/1 but with java flavor
猜你喜欢
  • 2020-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-19
  • 1970-01-01
  • 2016-08-29
  • 1970-01-01
  • 2012-07-04
相关资源
最近更新 更多