如何用正则表达式提取路径字符串中下划线与句号间的字符?
解决方案
给你几个简单直接的正则写法,都能精准提取0090203:
写法1:精准匹配前缀后缀
invoice_(\d+)\.txt
invoice_:精准匹配路径里的固定前缀,确保只抓invoice_后面的数字(\d+):捕获一个或多个数字(这就是你要的目标内容,用括号包裹成捕获组)\.txt:匹配固定后缀.txt,注意点.在正则里是特殊字符,必须加反斜杠\转义
写法2:通用匹配最后下划线到后缀的内容
如果以后文件名前缀不是invoice_,只想抓最后一个下划线和.txt之间的数字,用这个:
_(\d+)\.txt
_:匹配最后一个下划线(\d+):同样捕获中间的数字\.txt:匹配后缀
怎么提取捕获的内容
比如在Python里:
import re path = "/src/test/resources/shopping_invoice/invoice_0090203.txt" match = re.search(r'invoice_(\d+)\.txt', path) if match: print(match.group(1)) # 输出 0090203
你的原正则问题
你写的([^_]+)?\$")有语法错误:
[^_]+会匹配所有不是下划线的字符,所以会把0090203.txt全抓出来- 后面的
\$"是多余的语法错误,完全没必要加
内容的提问来源于stack exchange,提问作者Steerpike
相关产品推荐
相关产品推荐

