使用REGEX在句子中准确提取n个数字

时间:2018-02-02 11:22:05

标签: java regex

实施例

  

no.s 1234 65

输入:n

对于n=4,输出应为1234

对于n=2,输出应为:65(不是12)

尝试\d{n}12\d{n,}给出1234,但我想要完全匹配的。

Pattern p = Pattern.compile("//\d{n,}");

4 个答案:

答案 0 :(得分:2)

你需要负面的外观断言:(?!..):负面看,(?<!\d)\d{4}(?!\d) :负面展望:regex101

\D

然而并非所有的正则表达式引擎都支持它们,也许一个解决方法也可以匹配前面的字符和后面的字符(与0宽度匹配的环顾相反),((?:^|\D)(\d{4})(?:\D|$) 匹配所有excpet a digit)< / p>

import { withRouter } from 'react-router-dom'

this.props.history.goBack();

答案 1 :(得分:0)

我没有用java编写代码,但我可以尝试使用正则表达式来解决这个问题。

如果您的号码采用d1d2d3d4 d5d6格式,并且您想要提取数字d5d6,请创建3个组作为r'([0-9]+)("/s")([0-9]+)' - 每组括号()代表一个组。现在,仅在另一个对象中提取第三个组,这是您需要的输出。

答案 2 :(得分:0)

我认为你的意思是\b字符。

因此,您正在寻找的正则表达式(对于n=2):

\b\d{2}\b

答案 3 :(得分:0)

根据我的理解,您正在寻找一个与n个数字的字符串中的数字相匹配的正则表达式,并考虑数字之间的间距。如果是这种情况,那么您正在寻找类似的内容:

\b\d{4}\b

\ b将确保匹配限制在“&#39;字的开头/结尾”。其中一个单词是由\ w(包括数字)匹配的任何内容之间的边界,以及与相反的\ W(包括空格)匹配的任何内容之间的边界。

相关问题