如何编写匹配以$开头、以.或"结尾的正则表达式?
解决方案
要实现同时匹配以.或"结尾的目标,你可以通过两种方式修改正则表达式:
方法1:使用字符集(更简洁)
字符集[."]可直接匹配其中任意一个字符,写法更紧凑:
import re query1 = "示例$text1. 另一个$text2\" 还有$无结尾的内容" matches = re.findall(r'\$(.+?)[."]', query1) print(matches) # 输出: ['text1', 'text2']
\$:匹配开头的$符号(需转义,因为$在正则中是行尾锚点)(.+?):非贪婪捕获$之后到终止符前的内容[."]:匹配结尾的.或"(字符集内的.无需转义)
方法2:使用非捕获组(明确或逻辑)
如果需要更清晰地表达“或”逻辑,可用非捕获组(?:...)包裹两个终止符:
import re query1 = "示例$text1. 另一个$text2\" 还有$无结尾的内容" matches = re.findall(r'\$(.+?)(?:\.|\")', query1) print(matches) # 输出: ['text1', 'text2']
(?:\.|\"):非捕获组,?:表示不捕获该组内容,\.匹配句号,|表示“或”,\"匹配双引号- 该写法和字符集效果一致,但逻辑表达更直观
注意点
- 保留
(.+?)的非贪婪模式,避免匹配到距离$更远的终止符(比如防止把$a.b"中的a.b全部捕获) - 如果字符串存在嵌套或复杂场景,可根据实际需求调整匹配逻辑,基础场景下以上两种写法均可解决问题
内容的提问来源于stack exchange,提问作者Vikas Garud
相关产品推荐
相关产品推荐

