当前位置: 首页 > 面试题库 >

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

贺飞星
2023-03-14
问题内容

我试图在问题历史记录中找到问题的答案,但是当他们浏览了几十个我放弃的匹配答案后,它们又回到了一千多个。所以这是我的问题。

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

我是regex的新手,对它如何工作的简短解释会很有帮助。

先感谢您


问题答案:

您可以使用pattern
(?<!\d)\d{6}(?!\d),它的意思是“一个不带数字的字符串位置;紧随其后的是六个数字;紧跟着一个数字位置的字符串位置”。(记号(?<!...),已知为
阴性向后断言 ,意思是“不是由前面...”。记号(?!...),已知为 阴性预测先行断言
,意思是“后面没有...”。该符号\d的装置的一个数字。该符号{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;但是您的评论之一表明,这些数字可能紧接在繁体中文字符之前或之后,这些字符被视为单词字符(因此不会触发单词边界),因此我将其更改了。



 类似资料:
  • 我正在尝试创建一个Lucene4.10索引。我只想在索引中保存我放入文档的确切字符串,witout标记化。 我在用StandardAnalyzer。 我试图搜索术语“燃料箱容量”@en(包括引号),所以我试图省略它们,并在术语周围添加了另外几个引号,以便让lucene理解我正在搜索整个文本。 如果我打印查询,我会得到:3:“燃料箱容量en”,但我不想拆分@符号上的文本。 我认为我的第一个问题是St

  • 问题内容: 我试图读取一个流,并希望为每个字符串获取准确的位置(坐标) 我实际上有这样的职位 但是我不知道哪个字符串适合哪个位置。另一方面,在Itext中,我只能使用 但当然根本没有任何位置。 那么,如何获取每个文本(字符串,字符,…)的确切位置? 问题答案: 正如plinth和David van Driessche在他们的答案中已经指出的那样,从PDF文件中提取文本并非易事。幸运的是,iText

  • 比如说我有这个: 我想做两件事: 1) 使其成为当且仅当用户准确键入<代码>时!测试和其他内容,它将在通道中打印出测试 2)使其成为如果用户键入首先后跟空格和至少一个其他字符串字符,它将打印出——例如:a)不会打印出任何东西,b)(后跟一个空格)不会打印出任何东西,c)不会打印出任何东西,d)不会打印出任何东西,但是e)将打印出, f)将打印出, g)将打印出, and h)将打印出等。 我只知道

  • 问题内容: 我正在寻找一个正则表达式来匹配Java源代码中的字符串文字。 可能吗? 我的意图是用其他东西替换另一个字符串中的所有字符串。使用: 这样的事情。 问题答案: 好。那么,您想要在字符串中搜索以双引号开头和结尾的一系列字符吗? 注意非贪婪模式。

  • 问题内容: 我正在处理长度为25的DNA序列(请参见下面的示例)。我有一个230,000的列表,需要查找整个基因组中的每个序列(弓形虫寄生虫)。我不确定基因组有多大,但是比230,000个序列长得多。 我需要查找25个字符的每个序列,例如()。 基因组被格式化为连续字符串,即() 我不在乎它在哪里或被发现多少次,无论它是否存在。 我认为这很简单- 但是我也要找到一个在任何位置(只有一个位置)被定义

  • 我试图检查字符串是否包含完全匹配。例如: String str="这是我的字符串,具有-Policy和-p" 我怎样才能做到以下几点: