enter image description here 示例文字
工程| AB7407 | 007412665 |杰基布朗|画画 构造
我需要2个RegEx。在第一根管子AB7407之后,我可以给我第二个值 第二个管道007412665后,第二个Redex可以给我第三个值
我试过了,但它给了我示例文本:
^(?<field1>[^|]+),(?<field2>[^|]+),(?<field3>[^|]+),(?<field4>[^|]+),(?<field5>[^|]+)$
结果:
工程| AB7407 | 007412665 |杰基布朗|画画 构造
任何人都可以建议我的正则表达式发生了什么。
答案 0 :(得分:4)
我会这样做:
string original = "Engineering | AB7407 | 007412665 | Jackie Browne | Drawing for Construction";
string[] split = original.Split('|');
string firstcode = split[1];
string secondcode = split[2];
如果要删除所有前导/尾随空格:
string secondcode = split[2].Trim();
答案 1 :(得分:2)
Dim x = "Engineering | AB7407 | 007412665 | Jackie Browne | Drawing for Construction"
Dim parts = x.Split(" | ")
parts(1)
现在包含第二个字符串块,parts(2)
包含第三个字符串。这是VB,但c#或你正在使用的方法类似。
修复你的正则表达式:
^(?<field1>[^|]+) \| (?<field2>[^|]+) \| (?<field3>[^|]+) \| (?<field4>[^|]+) \| (?<field5>[^|]+)$
如果你必须有2个正则表达式,
(?<=^[^|]+ \| )[^|]+
匹配第二个块,
(?<=^(?:[^|]+ \| ){2})[^|]+
匹配第3名。
答案 2 :(得分:0)
正则表达式是处理它的错误方法。命令行上的cut -f 2,3 -d '|'
将提供您正在寻找的内容。
任何编程语言都应该有一个字符串拆分函数,它会根据你的管道分隔符将你的字符串变成一个字符串数组。使用它而不是正则表达式。
答案 3 :(得分:0)
使用群组
^(?<field1>.*?)\|(?<field2>.*?)\|(?<field3>.*?)\|(?<field4>.*?)\|(?<field5>.*?)$
名为field2
和field3
的群组包含您的数据