从String中取出两个Numbers中的一个

时间:2013-08-01 13:22:07

标签: regex

我有一个字符串列表,例如:Ø20X400 我需要提取第一个数字 - 在Ø和X之间

我到目前为止与\d+的数字相匹配 - 就像它一样简单...... 但我需要一个表达式来分隔第一个值,而不是两个......

5 个答案:

答案 0 :(得分:3)

您可以使用外观(?<=..)(?=..)

(?<=Ø)\d+(?=X)

或Java风格:

(?<=Ø)\\d+(?=X)

第二种方法是使用捕获组:

Ø(\d+)X

Ø(\\d+)X   

然后您可以提取该组的内容。

答案 1 :(得分:1)

我知道的正则表达式引擎将\n解析为换行符。 \d用于数字。

以下正则表达式为您提供了捕获组中ØX之间的第一个数字:

^.*?Ø(\d+)X.*

Regular expression visualization

Edit live on Debuggex

答案 2 :(得分:0)

此正则表达式将为您执行此操作(\d+?)X,此处为Rubular to prove it。请参阅,您希望将数字组合在一起,但要使其不贪婪,从而结束对X的评估。

答案 3 :(得分:0)

试试这个:

\d+(?=\D)

应该找到第一个未提前数字的号码

答案 4 :(得分:0)

使用正常的正则表达式,我会说:

Ø(\d+)X

这会找到Ø字符,后跟一个或多个数字,后跟一个X.此外,这些数字将存储在第一个捕获组中。捕获组从一个正则表达式实现到另一个正则表达式不同,但通常用\1表示。捕获组零\0通常是匹配的字符串本身。在此版本中,\d表示数字0-9,但如果您的正则表达式引擎使用\n用于此目的,请使用:

Ø(\n+)X