gpt4 book ai didi

Java REGEX 匹配字符串中的确切数字位数

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:41:06 24 4
gpt4 key购买 nike

我试图在问题历史记录中找到我的问题的答案,但结果只有一千多个,在浏览了几十个匹配的答案后我放弃了。所以这是我的问题。

我希望能够在字符串中找到恰好六位数字的第一个序列。给定字符串“一些文本 987654321 和更多文本 123456 以及一些其他文本 654321 最后还有更多文本”我想找到与 123456 序列匹配的正则表达式。

我是正则表达式的新手,关于它如何工作的简短解释会有很大帮助。

提前致谢

最佳答案

您可以使用 (?<!\d)\d{6}(?!\d) 模式,意思是“一个没有数字开头的字符串位置;后面紧跟六位数字;后面跟着一个没有数字的字符串位置”。 (符号 (?<!...) 被称为负向先行断言,意思是“前面没有 ...”。符号 (?!...) 被称为负向先行断言 , 表示“后面没有 ...”。符号 \d 表示一个数字。符号 {n} 表示“n 次”,因此例如 \d{6} 表示“六位数字”。 )

它可能看起来像这样:

final String number;
{
final Matcher m = Pattern.compile("(?<!\\d)\\d{6}(?!\\d)").matcher(input);
if(m.find())
number = m.group(); // retrieve the matched substring
else
number = null; // no match found
}

注意:此答案的先前版本建议使用字边界,\b ;但您的一条评论表明,这些数字可能紧跟在繁体中文字符之前或之后,繁体中文字符被视为单词字符(因此不会触发单词边界),所以我更改了这一点。

关于Java REGEX 匹配字符串中的确切数字位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9627988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com