仅当行以特定条件开头时,RegEx 匹配行内的模式
RegEx match pattern within a line only if line begins with a specific criteria
仅当行以特定条件开头时,如何匹配行内的模式?
例如,假设我们想在仅以 Banana
开头的行上匹配 6-digit
数字
Banana lmasfh asfjhas jhona uh3 a y u3u3 303303 ajksdfkas 3jk5hk
Banana lmasfh asfjhas jhona uh3 a y u3u3 202202 ajksdfkas 3jk5hk
Apple lmasfh asfjhas jhona uh3 a y u3u3 101101 ajksdfkas 3jk5hk
从上面来看,结果应该只有 303303
和 202202
。
我尝试查看正后视,但它们的宽度是固定的,无法继续。类似于:(?<=^Banana)\d{6}
你很接近。两者之间只有“东西”(在正则表达式中用 .*
很容易处理)。然后添加一个匹配组就可以了。
(?<=^Banana).*(\d{6})
将把303303
和202202
都放入第一组。演示:https://regex101.com/r/k87i7x/1
您可以省略回溯并改为匹配它,并添加单词边界 \b
以防止部分匹配:
^Banana\b.*\b(\d{6})\b
仅当行以特定条件开头时,如何匹配行内的模式?
例如,假设我们想在仅以 Banana
6-digit
数字
Banana lmasfh asfjhas jhona uh3 a y u3u3 303303 ajksdfkas 3jk5hk
Banana lmasfh asfjhas jhona uh3 a y u3u3 202202 ajksdfkas 3jk5hk
Apple lmasfh asfjhas jhona uh3 a y u3u3 101101 ajksdfkas 3jk5hk
从上面来看,结果应该只有 303303
和 202202
。
我尝试查看正后视,但它们的宽度是固定的,无法继续。类似于:(?<=^Banana)\d{6}
你很接近。两者之间只有“东西”(在正则表达式中用 .*
很容易处理)。然后添加一个匹配组就可以了。
(?<=^Banana).*(\d{6})
将把303303
和202202
都放入第一组。演示:https://regex101.com/r/k87i7x/1
您可以省略回溯并改为匹配它,并添加单词边界 \b
以防止部分匹配:
^Banana\b.*\b(\d{6})\b