正则表达式需求:捕获AP后首个空格前内容(支持有无空格)
正则表达式修正方案
原表达式(?<=AP)(\S+)(?=\s)的问题在于:当AP后带有空格时,(?<=AP)定位到AP后的空格位置,(\S+)无法匹配空白字符,导致匹配失败,无法捕获目标内容。
针对需求(捕获AP后、首个空格前的数据,AP后可能有空格或无空格),提供两种可行的正则表达式:
方案一(正向断言写法)
(?<=AP)\s*(\S+)(?=\s)
各部分作用:
(?<=AP):断言当前位置前是"AP"\s*:匹配0个或多个空白字符,兼容AP后有无空格的情况(\S+):捕获1个及以上非空白字符,即我们需要的目标数据(?=\s):断言当前位置后是空格,确保捕获的是首个空格前的内容
方案二(直接匹配写法)
AP\s*(\S+)
各部分作用:
AP:匹配开头的固定标识"AP"\s*:匹配0个或多个空白字符,兼容AP后有无空格的情况(\S+):自动捕获到首个空格前的所有非空白字符,无需额外断言
测试验证
对给定的4条原始数据,两个方案均能精准捕获期望结果:
1735 1735 W1735 W1735
内容的提问来源于stack exchange,提问作者Herman Lewis
相关产品推荐
相关产品推荐

