求问匹配中间含可选前后空格加号的两个字符串的正则表达式
匹配带加号的单引号字符串组合的正则方案
嘿,这个需求其实挺典型的,我来一步步给你讲清楚怎么实现!
核心正则表达式
直接上能解决你问题的正则:
'[^']+'\s*\+\s*'[^']+'
正则各部分拆解
我们来逐个解析每个部分的作用,这样你能理解为什么这么写:
'[^']+':匹配被单引号包裹的任意字符串。其中[^']是否定字符集,表示匹配除了单引号之外的任意字符,+表示至少匹配一次,这样就能精准捕获单引号里的内容,不会误匹配到跨多个单引号的情况。\s*:匹配0个或多个空白字符(包括空格、制表符等),这部分就是用来兼容加号前后有没有空格的情况——不管是没有空格、只有前空格、只有后空格还是前后都有,都能匹配到。\+:因为加号+在正则里是特殊元字符(表示“匹配前面的元素一次或多次”),所以我们需要用反斜杠\转义它,让正则把它当成普通的加号字符来匹配。
测试验证
这个正则可以完美匹配你给出的所有示例:
'字符串'+'字符串''字符串' + '字符串''字符串'+ '字符串'
扩展思路
如果之后你有更灵活的需求,比如允许双引号或者混合引号,可以调整正则:
- 要支持双引号的话,把单引号换成双引号即可:
"[^"]+"\s*\+\s*"[^"]+" - 如果要同时支持单双引号且前后引号一致,可以用反向引用:
(['"])[^\1]+\1\s*\+\s*\1[^\1]+\1(不过这个场景相对少,你的需求里用第一个正则就足够了)
内容的提问来源于stack exchange,提问作者JasonGenX
相关产品推荐
相关产品推荐

