求正则表达式:匹配下划线包裹文本,排除无空格分隔的连续下划线
解决方案
可以使用带有负环视断言的正则表达式来满足需求,确保下划线的前后只能是空白字符或字符串首尾,不会和其他非空白字符相连:
/(?<!\S)_(.*?)_(?!\S)/gmi
正则各部分解释
(?<!\S):负后向环视,断言当前位置(下划线_的左侧)不是非空白字符,即左侧只能是字符串开头或空白字符_:匹配包裹文本的起始下划线(.*?):非贪婪模式匹配下划线之间的任意内容(支持包含空格、字母等),直到遇到符合条件的结束下划线_:匹配包裹文本的结束下划线(?!\S):负前向环视,断言当前位置(下划线_的右侧)不是非空白字符,即右侧只能是字符串结尾或空白字符gmi:修饰符,分别代表全局匹配、多行匹配、忽略大小写(可根据实际需求调整)
匹配验证
- 成功匹配:
_Sample welcome text_、Sample _welcome_ _text_ - 拒绝匹配:
Sample_welcome_text(下划线两侧为字母,不满足环视断言)
如果需要限制下划线内部不能出现换行符,可将(.*?)替换为([^\n_]*?),避免跨行匹配或意外匹配到内部的下划线。
内容的提问来源于stack exchange,提问作者The concise
相关产品推荐
相关产品推荐

