否定多个字符序列的正则表达式是什么?

时间:2019-05-30 06:13:44

标签: php regex sequence negate

我有(?:(?!/>)[^\s>])*放弃包含“ />”或“”或“>”的文本。 我想丢弃另一个序列,说“虚拟”。

测试用例:

  • helloworld(匹配“ helloworld”)
  • hello world(匹配“ hello”)
  • helloworld /(匹配“ helloworld /”)
  • helloworld />(匹配“ helloworld”)
  • helloworld空间(匹配“ helloworld”)
  • helloworld>空间(匹配“ helloworld”)
  • hellodummyworld空间(匹配“ hello”)

我如何在一个表达式中实现所有这些目标?

1 个答案:

答案 0 :(得分:0)

(?:(?!/>)(?!dummy)[^\s>])*

这是可以丢弃多个序列的方式。

说明:

^       # match start of line/string
(?:     # begin non-capturing group
  (?!   # begin negative lookahead
    />  # literal text sequence />
  )     # end negative lookahead

)       # end non-capturing group

(?!/>)代表“ />”

(?! dummy)代表“虚拟”

[^ \ s>]用于“”或“>