2016-09-21 51 views
-1

我有以下示例文本:正則表達式 - 控制

There are 7 apples, 3 lemons. 

我有一個軟件,它用正則表達式搜索,但兩次:一個是「蘋果」(作定語)和第二次爲「7」(作爲價值)。我的問題是:如果我搜索模式「檸檬」,它會發現「檸檬」,如果我搜索「\ D」,它會發現「7」,但我想要「3」。

我的問題是:我如何控制正則表達式引擎?

+0

'((\ d +)(\ w +))',然後從每個匹配中獲取組值。 https://regex101.com/r/jL6pI9/1 – ThePerplexedOne

回答

0

如果你想與lemons使用相關的數字這個模式:

/(\d+)\slemons/ 

如果你想與​​使用這種模式相關的數字:

/(\d+)\sapples/ 

顯然,這可以通過一個被DRYed起來程序,允許您輸入lemons或​​部分。它可以採用輸入的模式,並將(\d+)\s正則表達式添加到您正在搜索的文字文本中。我會把這部分留給你。

如果你想提取的話所有出現在他們附近的數字,你可以用這個表達式來分析你的非結構化數據...

/(\d+)\s(\w+)/g 

...得到的東西,如:

\1 # 7 
\2 # apples 

\1 # 3 
\2 # lemons 
+0

第一個問題:什麼是「/」符號?第二個問題:問題是,我只能編寫正則表達式,而不訪問程序代碼。哪個正則表達式模式可以訪問第二組比賽? – CyKon

+0

1.您可以省略'/'符號。它們只是一個表示正則表達式的約定。 2.'\ 1'將進入第一組比賽; '\ 2'將訪問第二組比賽。 – wpcarro

+0

好的,我明白了。但我需要找到「3個檸檬」的正則表達式並同時返回(!)「3」。因爲我只能有一個正則表達式,並且沒有進一步的訪問結果(groups)... – CyKon