[英]RegEx to get 2nd and 3rd variables between pipes
在此处输入图片描述 示例文本:
工程学| AB7407 | 007412665 | 杰基·布朗(Jackie Browne) 施工图
我需要2个RegEx。 在第一个管道AB7407之后,我可以给我第二个值,在第二个管道之后,第二个Redex可以给我第三个值007412665
我尝试了以下操作,但它给了我示例文本:
^(?<field1>[^|]+),(?<field2>[^|]+),(?<field3>[^|]+),(?<field4>[^|]+),(?<field5>[^|]+)$
结果:
工程学| AB7407 | 007412665 | 杰基·布朗(Jackie Browne) 施工图
任何人都可以建议我的Regex发生什么情况。
我会这样做:
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();
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})[^|]+
匹配第三名。
正则表达式是错误的处理方式。 cut -f 2,3 -d '|'
在命令行上将提供您想要的内容。
任何编程语言都应具有字符串拆分功能,该功能将根据管道定界符将您的字符串转换为字符串数组。 用它代替正则表达式。
使用组
^(?<field1>.*?)\|(?<field2>.*?)\|(?<field3>.*?)\|(?<field4>.*?)\|(?<field5>.*?)$
名为field2
和field3
组包含您的数据
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.