2013-07-16 245 views
0

我有一個字符串,它看起來有點像這兩個字符串之間獲得價值(Wt和kg之間) - 但它也從任何一邊拉白色空間。從正則表達式忽略空白

任何人都可以告訴我,我怎麼可以調整表達,只是給我的價值,而不是空白。

回答

1

把空間的lookarounds:

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

由於您使用.NET框架,你可以使用一個可變長度的回顧後(這往往是在其他的regex風味禁止)

\s是白色字符(空格,製表符,換行符)的字符類

\S意味着一切,是不是在\s

我用\S+代替.*?避免懶惰量詞,並修剪圍繞目標子空間。

+0

不錯的改進,不要忘了添加[一些解釋](http://meta.stackexchange.com/questions/177757/are-answers-that-just-contain-a-regular-expression-pattern-really - 良好 - 答案)。爲什麼我們可以在這裏使用不固定長度的lookbehinds,'\ S +'等等的含義:) – HamZa

1

由於您使用的一組反正,你可能只是添加非捕獲組:

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

\s*將匹配零個或多個空格字符。

1

嘗試使用(?<=Wt)\s+(.*?)\s+(?=kg)

的\ S +應該吃出來的白色空間,只留下價值。

Documentation