Regex 正则表达式匹配特定字符串,但仅当它不匹配时';不要以标签开头

Regex 正则表达式匹配特定字符串,但仅当它不匹配时';不要以标签开头,regex,nsregularexpression,Regex,Nsregularexpression,如何匹配特定的独立术语,但前提是它不以特殊字符开头,特别是“#”或“.” 下面是我当前的正则表达式,以匹配独立术语 (?i)\b(two three)\b 问题:检查边界似乎不考虑特殊字符。 例子 “一二三支票”✘ 匹配,但不应匹配 “一二三支票”✘ 匹配,但不应匹配 “一、二、三支票”✘ 匹配,但不应匹配 “一二三支票”✓ 正确匹配 “一二三支票”✓ 不匹配。这也是正确的 如果我的模式前面有“#”和“.”这样的字符,如何确保模式不匹配?我更喜欢黑名单特殊字符,而不是白名单字母/数字,因为

如何匹配特定的独立术语,但前提是它不以特殊字符开头,特别是“#”或“.”

下面是我当前的正则表达式,以匹配独立术语

(?i)\b(two three)\b
问题:检查边界似乎不考虑特殊字符。

例子

  • “一二三支票”✘ 匹配,但不应匹配
  • “一二三支票”✘ 匹配,但不应匹配
  • “一、二、三支票”✘ 匹配,但不应匹配
  • “一二三支票”✓ 正确匹配
  • “一二三支票”✓ 不匹配。这也是正确的

如果我的模式前面有“#”和“.”这样的字符,如何确保模式不匹配?我更喜欢黑名单特殊字符,而不是白名单字母/数字,因为这对非拉丁语言也很有效。

如果搜索词前面有
,则使用负查找失败:

(?i)(?<![#.])\b(two three)\b
(?i)(?

那么你想在一个单词的开头匹配一个给定的字符串吗?不必太花哨,只需匹配一行开头的空格,然后再匹配你的空格即可

`(^|[[:space:]])(two three)\b`