0

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

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

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

谁能告诉我如何调整表达式以返回值而不是空白。

4

3 回答 3

1

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

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

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

于 2013-07-16T09:20:35.033 回答
1

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

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

文档

于 2013-07-16T09:21:18.453 回答
1

将空格放在环视中:

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

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

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

\S表示所有不在其中的\s

我使用\S+而不是.*?避免使用惰性量词,并修剪目标子字符串周围的空格。

于 2013-07-16T09:21:24.800 回答