如何从匹配到的10位字母数字串中捕获前8个字符?
正则表达式修改方案
直接给你两种实用的修改方式:
方式一:捕获前8位,同时匹配完整10位串
把正则改成 (\w{8})\w{2}。这个写法会先找到完整的10位字母数字串,同时把前8位单独放到捕获组里。比如在你给的例子里,匹配到“12345abcde”后,第一个捕获组的内容就是“12345abc”。
方式二:直接返回前8位(不包含后面2位)
如果只想要前8位的结果,不想带上后面的2位,可以用 \w{8}(?=\w{2})。这里的(?=\w{2})是正向预查,只会确认当前位置后面跟着2位字母数字,不会把这2位算进匹配结果里,所以直接就能拿到“12345abc”。
额外提醒
如果要确保匹配的是单独的10位单词(比如不想从更长的串里截出10位),可以加上单词边界\b,改成 \b(\w{8})\w{2}\b 或者 \b\w{8}(?=\w{2})\b,这样就不会误匹配类似“xxxxx1234567890”这种长串里的片段。
内容的提问来源于stack exchange,提问作者user63898
相关产品推荐
相关产品推荐

