【问题标题】:GA regex delimiting only one word between 2 whitespacesGA 正则表达式仅在 2 个空格之间分隔一个单词
【发布时间】:2019-11-05 08:06:29
【问题描述】:

我必须写一个正则表达式(我生命中的第一个:D)并匹配以下单词:

照明/

发光/

发光/

(+ 其他我出现的派生词:“illumin” + “ending”)

但不是这些:

/mejor iluminación /iluminar con ello./ 发光,/

我试过了

^ilumin[a-z]+\b

它可以工作,但不能排除“con ello”和“,”。

所以我有一个左边但没有右边的单词分隔符。最后的“$”也不起作用。

您对如何做到这一点有任何想法吗?结果应该测试here

提前非常感谢!

【问题讨论】:

  • 您是否尝试过负前瞻?
  • 非常感谢您的回复!我试过这个 ^(?!.*^ilumin[a-z]+).*$ 但现在我无法从左侧分隔单词,所以不能排除“mejor iluminación”。

标签: regex delimiter word derivative


【解决方案1】:

您可以将ó 添加到character class

要排除“con ello”和“,”,您可以使用 negative lookahead (?!

^ilumin[a-zó]+\b(?! con ello|,)

Regex demo

如果您想使用锚点$ 断言行尾,则不需要负前瞻,因为[a-zó]+ 不匹配空格。

^ilumin[a-zó]+$

Regex demo

【讨论】:

  • 感谢提示“ó”!我已经尝试用另一个示例 ^estudi[a-z]+$ 来匹配所有派生词(estudi + 结尾,如 estudiar、estudio、estudiantil 等),唯一不匹配的派生词是那些以 sth 开头或后跟 sth : "mejor estudio" "estudiabamos con ello" "estudando,"
  • @Elena 我不确定那里应该和不应该匹配什么。如果你看到这个演示,那是不是正确的? regex101.com/r/tsblXk/1
  • 感谢您的帮助!!!是的,除了“estudi..”之前的“MEJOR”和“estudi..”之后的“CON ELLO”之外,它几乎是完美的。这些是我不想出现在结果中的东西。
  • @Elena 如果支持,您可以使用否定的lookbehind。 (?<!mejor )\bilumin[a-zó]+\b(?! con ello|,) 请参阅 regex101.com/r/rYoqq7/1regex101.com/r/KeG4gc/1 您使用的是什么工具或语言?
  • 我需要一个正则表达式来排除可能出现在单词“estudi ...”之前的任何内容(不仅是“mejor”),以及estudi ...之后的任何内容(不仅是“con ello”)。使用正则表达式 ^(?!.*^estudi[a-z]+).*$ 我设法排除了以 estudi 开头的单词之后的任何内容,但不能排除它之前的任何内容。我只需要在这里测试结果:analyticsmarket.com/freetools/regex-tester
猜你喜欢
  • 2015-09-10
  • 2011-05-21
  • 2021-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-06
  • 2020-05-09
相关资源
最近更新 更多