RegEx - 从两个字符串之间获取值,忽略空格

时间:2013-07-16 09:15:55

标签: .net regex

我有一个看起来像这样的字符串:blah Wt 10.35 kg blah

我正在使用:(?<=Wt)(.*?)(?=kg)

获得重量值(在Wt和kg之间) - 但它也从两侧拉出空白区域。

任何人都可以告诉我,我可以如何调整表达式,只是给我回到价值而不是空白区域。

3 个答案:

答案 0 :(得分:1)

由于您无论如何都在使用群组,因此您可以添加一个非捕获群组:

(?<=Wt)(?:\s*)(.*?)(?:\s*)(?=kg)

\s*将匹配零个或多个空白字符。

答案 1 :(得分:1)

尝试使用(?<=Wt)\s+(.*?)\s+(?=kg)

\ s +应该吃掉空格,只留下价值。

Documentation

答案 2 :(得分:1)

将空格放在外观中:

(?<=Wt\s*)(\S+)(?=\s*kg)

由于您使用.net框架,您可以使用可变长度的lookbehind(在其他正则表达式中经常被禁止)

\s是白色字符(空格,制表符,换行符)的字符类

\S表示\s

中没有的所有内容

我使用\S+代替.*?来避免延迟量词,并修剪目标子字符串周围的空格。