如何使用正则表达式匹配包含两个不相同单词的所有行
正则匹配两个字段不同行的解决方案
可以实现,直接使用负向先行断言即可达到直接匹配目标行的效果。
可用正则表达式
/^\d+: ([,\w]+) (?!\1)[,\w]+\s*$/gm
正则规则拆解
^:行首锚定,确保匹配从行开头开始\d+::匹配行首的数字编号+冒号的固定前缀([,\w]+):捕获第一个字段,匹配范围包含字母、数字、下划线、英文逗号,可根据实际字段规则调整:匹配两个字段之间的空格(?!\1):负向先行断言,限定后面的内容不能和第一个捕获组的内容完全相同[,\w]+:匹配第二个字段,规则和第一个字段一致\s*$:匹配行尾可能存在的空白字符,同时锚定行尾,避免匹配到行内部分内容
测试代码示例
let string = ` 1: 43,186 43,186 2: 296,531 296,531 3: 108086 108086 4: abcdef abcdef 5: Capture This 6: 497,802 497,802 7: 200,062 300,062 8: Not Same 9: 202232 252232 10: 4,324,452 4,324,452 `; let magicalRegex = /^\d+: ([,\w]+) (?!\1)[,\w]+\s*$/gm; // 测试匹配结果 let matches = string.match(magicalRegex); console.log(matches); // 输出结果: // [ // '5: Capture This ', // '7: 200,062 300,062 ', // '8: Not Same ', // '9: 202232 252232 ' // ] string.replace(magicalRegex, matched=>{ // 此处对匹配到的目标行做自定义处理 return matched; });
补充说明
如果你的字段允许出现除了\w和,之外的字符,只需要调整字符集规则即可,比如允许出现短横线就改为[,\w-]。
内容的提问来源于stack exchange,提问作者Monwell Partee
相关产品推荐
相关产品推荐

