regex - 使用带有或 (|) 的前瞻和后视
问题描述
我正在尝试匹配一些前后没有空格的特殊字符。
通常 ww 之前的连字符和 ww 之后的连字符应该匹配。
这是我写的以下正则表达式: (?<!\s)([.([]!):,+"\/-])(?!\s)
我也试过这个:
((?<!\s)|(?!\s))([.([]!):,+"\/-])
但是前后空格的连字符也匹配。(不应该是这种情况)
你能告诉我我做错了什么吗?感谢您的帮助 !
解决方案
当(?<!\s)([.([\]!):,+"\\/-])(?!\s)
正则表达式前面没有空格或后面有空格时,正则表达式将失败特殊字符匹配。
正((?<!\s)|(?!\s))([.([\]!):,+"\\/-])
则表达式在前面没有空格时匹配特殊字符,或者要求特殊字符(与 匹配[.([\]!):,+"\\/-]
)不是空格字符((?!\s)
消费模式之前限制此模式)。
您需要确保匹配失败,只有在两端都用空格字符括起来的情况下:
[.([\]!):,+"\\/-](?!(?<=\s.)\s)
(?<!\s)[.([\]!):,+"\\/-]|[.([\]!):,+"\\/-](?!\s)
请注意[.([\]!):,+"\\/-](?!(?<=\s.)\s)
匹配一个特殊的字符(带[.([\]!):,+"\\/-]
),该字符后面没有紧跟一个空格的空格和任何一个字符(实际上,.
用于简单地匹配此处的特殊字符)。
该(?<!\s)[.([\]!):,+"\\/-]|[.([\]!):,+"\\/-](?!\s)
模式匹配一个不紧跟在空格之前的特殊字符,或者将匹配一个不跟在空格后面的特殊字符。
推荐阅读
- webhooks - 发布文档时从 Sanity 接收 webhook 或其他类型的 ping?
- android - 自定义 AlertDialog 有时不会在 UI 上显示,为什么?
- javascript - 将消息从一个选项卡发送到另一个选项卡
- node.js - 如何通过使用 mongoose 查询我的 mongodb 来获取 postIds 的长度
- android - 如何合并位图列表并在 VideoView 上运行?
- javascript - 导航到特定组件 (React)
- javascript - VueJS 组件 prop 执行顺序
- javascript - switch case语句中的异步等待不起作用
- javascript - 在计时器上显示当前视频时间(小时:分钟:秒)
- pandas - 如何在 pandas 中执行类似集合的操作?