多个正则表达式的组合只需一个

时间:2017-06-22 17:44:31

标签: c# regex

我无法从文件中提取某个字符串...以防输入字符串为:

Codigo: 000001
Cliente: 000030 John Red

Codigo: 000002
Cliente: 000032 Kin Ahaul paulo

我的预期结果是:

Codigo: 000001 - John Red
Codigo: 000002 - Kin Ahaul Paulo

我的结果是:

Codigo: 000001 -
Codigo: 000002 -

正则表达式:

(Codigo: [0-9]{6})

我需要做什么并为每个人创建一个正则表达式?如果要提取代码一个正则表达式并提取另一个名称?

3 个答案:

答案 0 :(得分:0)

您可以使用三个正则表达式。一个将提取Codigo行,一个将提取Cliente行。然后,您可以遍历数据并在使用第三个清理后附加Cliente数据。

提取Codigo:

/Codigo:\s\d*/g

提取Cliente专栏:

/Cliente:.*/g

通过删除匹配来清除Cliente行:

/Cliente:\s\d*/g

答案 1 :(得分:0)

您可以使用捕获组在单个正则表达式中执行此操作:

(Codigo: \d+)\nCliente: \d+ (.*)

使用第一组和第二组,所需的结果为$1 - $2

在此重新说明:http://refiddle.com/refiddles/594c082d75622d4e37160000

答案 2 :(得分:0)

尝试使用此正则表达式,必须出现 Codigo: Cliente:字样,然后您应确保空格,数字(数字)和名称是按顺序出现:

(Codigo:[ ]+\d+|Cliente:[ ]+\d+)([A-Za-z ]+)