将前瞻和后视与 or ( | ) 结合使用

using lookahead and lookbehind with or ( | )

我正在尝试匹配一些前后没有白色 space 的特殊字符。

通常 ww 之前的连字符和 ww 之后的连字符应该匹配。

这是我写的以下正则表达式: (?

我也试过这个:

((?

但前后带有白色 space 的连字符也匹配。 (应该不是这样的)

你能告诉我我做错了什么吗? 感谢您的帮助!

(?<!\s)([.([\]!):,+"\/-])(?!\s) 正则表达式前面没有空格或后面有空格时,特殊字符匹配将失败。

((?<!\s)|(?!\s))([.([\]!):,+"\/-]) 正则表达式匹配前面没有空格的特殊字符,或者要求特殊字符(与 [.([\]!):,+"\/-] 匹配)不是空格字符((?!\s)在使用模式 限制 此模式之前)。

您需要确保只有在两端都包含空白字符的情况下匹配才会失败:

[.([\]!):,+"\/-](?!(?<=\s.)\s)
(?<!\s)[.([\]!):,+"\/-]|[.([\]!):,+"\/-](?!\s)

regex demo #1 and regex demo #2

请注意,[.([\]!):,+"\/-](?!(?<=\s.)\s) 匹配一个特殊字符(带有 [.([\]!):,+"\/-]),它后面没有紧跟一个空格的空格和任何一个字符(实际上,.用于简单匹配此处的特殊字符)。

(?<!\s)[.([\]!):,+"\/-]|[.([\]!):,+"\/-](?!\s) 模式匹配前面没有紧接空格的特殊字符,或者匹配后面没有空格的特殊字符。