使用REGEX C#查找字符串中的属性

时间:2016-03-24 13:32:07

标签: c# regex

我有以下输入:

  

Pontos:450; Linhas:446; Xmínimo:554625; Yimínimo:9170625; Tamanhodacélula:125米; Projecao:“SAD69 UTM zone 23S”;假人:99999; X = UTM Este SAD69 Zona 23S; Y = UTM Norte SAD69 Zona 23S; gD_FOURIER_0 = Gravidade Vertical Fourier,semcorreçãodeterreno; gD_FOURIER_2p1 = Gravidade Vertical Fourier,paracorreçãodeterreno com densidade 2.1gcm³; GDD_FOURIER_0 = Gradiente GDD Fourier,semcorreçãodeterreno。 GDD_FOURIER_2p1 = Gradiente GDD Fourier,paracorreçãodeterreno com densidade 2.1gcm³; gD_FOURIER_2p1_Conformed = Gravidade Vertical Fourier,paracorreçãodeterreno com densidade2.1gcm³,corformado ao modelo DNSC08;

我想找到所有属性{any}={any};。我尝试使用以下代码:

string pattern = @"(.*)=(.*);";
MatchCollection mc = Regex.Matches(input, pattern);

但没有成功......

4 个答案:

答案 0 :(得分:1)

嗯,你需要比{any}更精确。

在等号之前你可能想要的部分是"除了空格"之外的任何东西。在正则表达式中\S+

在等号之后,除了分号"之外,你可能还有什么呢?那是[^;]+

string pattern = @"(\S+)=([^;]+);";

测试live on regex101.com

答案 1 :(得分:1)

当然,只需使用:

(?P<key>\w+)=(?P<value>[^;]+)

请参阅a demo on regex101.com

答案 2 :(得分:0)

你太急切了:

(.*?)=(.*?);

更好吗?

编辑 - &gt;我忘记了';'

Edit2:

(.*?)(:|=)(.*?);/g

https://regex101.com/r/nY6lS0/1

答案 3 :(得分:0)

试试这个:

/([^\s]+?)=(.+?);/g

在C#中:

string pattern = @"([^\s]+?)=(.+?);";
MatchCollection mc = Regex.Matches(input, pattern);