【问题标题】:Regex to find special characters from a String with some exceptions正则表达式从字符串中查找特殊字符,但有一些例外
【发布时间】:2009-02-13 18:07:02
【问题描述】:

我需要编写一个小的正则表达式,当它与任何其他特殊字符一起出现时,它应该匹配文字字符 * 的出现。例如,我需要捕获所有这些事件 !* )* (* ** *.* 。对此的例外是*==*,我想允许。我尝试将正则表达式编写为

\W&&[^=]\*|\*\W&&[^=]

但这似乎不起作用。有什么建议么?非常感谢您的帮助。

【问题讨论】:

    标签: regex


    【解决方案1】:
    (\*[^\w=]|[^\w=]\*)
    

    匹配星号后接任何非单词字符(等号除外),或匹配非单词字符后接星号/

    【讨论】:

      【解决方案2】:

      那个匹配你所有的样本:

      (\!\*|\)\*|\(\*|\*\*|\*\.\*)
      

      如果你想要超过这 4 种情况,最好描述一下,允许什么和禁止什么。

      【讨论】:

      • 感谢约翰内斯的回复。但我一直在寻找适用于任何特殊字符的通用正则表达式。它应该捕获除 = 和 = 之外的所有组合
      • 任何涉及 * 的特殊字符都将被捕获。唯一的例外是 = 和 =
      • 任何属于 \W 谢谢。
      • 嗯,好的,perl 正则表达式。您使用哪个库? Perl 本身?
      • 我在 Java 模式类中使用它
      【解决方案3】:

      试试这个

      ([^(\W\*)*(\*\W)*]|=\*|\*=)
      

      【讨论】:

        【解决方案4】:

        我认为您正在寻找带有lookbehind and lookahead assertions 的正则表达式。比如:

        (?!=[\=\s])\*(?![\=\s])
        

        【讨论】:

        • 否定后视的语法是(?<!,而不是(?!=
        猜你喜欢
        • 1970-01-01
        • 2022-11-17
        • 1970-01-01
        • 2011-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多