【问题标题】:Regex - find word in string正则表达式 - 在字符串中查找单词
【发布时间】:2019-10-10 14:09:38
【问题描述】:

我有一个字符串:prawy p pęknięty p zderzak pęknięcie(它是波兰语 语言)

我想选择所有p(除了单词“pęknięty”和“peknięcie”中的“p”)

我尝试过这样做:\b(s*ps*)\b,但它不能正常工作。有什么想法吗?

【问题讨论】:

  • 那么,除了这两个特定的单词之外,单词开头的所有p 字母?试试\bp(?!ęknię(?:ty|cie)\b)
  • @WiolaTchórzewska 有没有给你的答案helpful
  • 是的,谢谢大家的帮助:)

标签: regex word polish


【解决方案1】:

也许,

\bp(?=[a-z]+|\s|$)

(?!pęknięcie|pęknięty)\bp

可能工作正常。

Demo 1

Demo 2


如果您希望简化/修改/探索表达式,在regex101.com 的右上角面板中已对此进行了说明。如果您愿意,您还可以在this link 中观看它如何与一些示例输入匹配。


正则表达式电路

jex.im 可视化正则表达式:

【讨论】:

    【解决方案2】:

    您可以使用负前瞻和字符类:

    \bp(?!([eę]knię(?:cie|ty)\b)
    

    部分

    • \bp 前面有一个单词边界
    • (?!如果直接右边的不是
      • [eę]knię 匹配 eę 后跟 knię
      • (?:cie|ty)\b 匹配 ciety 和一个单词边界
    • ) 关闭负前瞻

    Regex demo

    使用字符类可能会匹配单词中eę 的无效变体。

    要准确匹配单词,您可以在单词边界之间匹配它们

    \bp(?!ęknięty\b|ęknięcie\b)
    

    Regex demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-20
      • 1970-01-01
      • 2019-01-20
      • 2012-12-04
      • 1970-01-01
      • 1970-01-01
      • 2018-08-02
      • 2012-03-05
      相关资源
      最近更新 更多