【问题标题】:Match only ! in a string只匹配!在一个字符串中
【发布时间】:2014-12-09 09:52:26
【问题描述】:

如果我有这个字符串 S= hello! are u ok!? yes ! good !!
我只想捕获感叹号而不是!?也不!!?

谢谢

【问题讨论】:

    标签: regex string matlab


    【解决方案1】:

    使用如下的否定后瞻和前瞻断言。

    (?<![?!])!(?![?!])
    

    DEMO

    说明:

    • (?&lt;![?!]) 否定的lookbehind 断言匹配之前会出现?! 之外的任何一个
    • ! 匹配文字 ! 符号。
    • (?![?!]) Negative lookahead 断言匹配后面会跟任何 ?! 符号,但不是。

    【讨论】:

    • matlab 是否支持lookbehind?
    • 是的,它有效!非常感谢...我以正确的方式使用lookbehind,但我无法以正确的形式使用它:)
    • 如果我需要做同样的事情但带有问号?并且不要捕获像!? ?! ?!?! !?!?
    【解决方案2】:
    [^!](!)(?!!)
    

    试试这个。应该这样做。抓住捕获。见 dmeo。

    https://regex101.com/r/iY3eK8/8

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-07
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-10
      相关资源
      最近更新 更多