2016-09-21 77 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