在正则表达式中跳过单词边界

时间:2014-01-31 12:02:35

标签: c# regex

我有这样的文字

test=1;toto=2;GSettings.key=value;GSettings.test=42;x=y;GSettings.aaa=bbb 

我需要的是使用Regex在分隔符

之后提取字符串

需要输出:

key=value

test=42

aaa=bbb 

我尝试了什么:  正则表达式

GSettings.[^=]+=[^=;]+但是GSettings总是包含在匹配模式中

这是Rubular.com上的my test

注意: 我需要一个 RegEx 解决方案,不欢迎任何其他建议,例如使用string.SplitLinq

3 个答案:

答案 0 :(得分:2)

使用capture group

GSettings\.([^=]+=[^=;]+)
//       ^__ don't forget to escape the dot

您想要的字符串将在第1组中。

答案 1 :(得分:2)

您正在寻找匹配但不会捕获 GSettings Regex Lookbehind语法非常简单。只需使用(?<=MatchButDontCapture)capture+

即可

这应该适合你的情况

(?<=GSettings\.)[^=]+=[^=;]+

您还可以使用Capture Groups进行更高级的匹配。例如

GSettings\.([^=]+)=([^=;]+) //The brackets are used for grouping

组1将保持键,而组2将保持值

答案 2 :(得分:1)

您可以使用lookahead

(?<=GSettings\.)[^=]+=[^=;]+

如果你的正则表达式引擎支持PCRE,你也可以说:

GSettings\.\K[^=]+=[^=;]+