Java Regex查找包含数字的行,以文本开头,但从ocurrence中删除文本

Java Regex查找包含数字的行,以文本开头,但从ocurrence中删除文本,java,regex,regex-lookarounds,regex-group,Java,Regex,Regex Lookarounds,Regex Group,具有以下输入: Testing 42702434884 Testing 064352729-13 05.994.401/0001-53 Testing 134.632.125-03 我尝试获取包含数字的行,只考虑以文本开头的行,并从结果中删除文本 目前,我尝试了以下表达式: (?!a-zA-Z)\b(\d{11}|\d{14})|(\d{3}\.\d{3}\.\d{3}\-\d{2}|\d{3}\d{3}\d{3}\-\d{2})|(\d{2}\.\d{3}.\d{3}\/\d{4}-\d{

具有以下输入:

Testing 42702434884 
Testing 064352729-13
05.994.401/0001-53
Testing 134.632.125-03
我尝试获取包含数字的行,只考虑以文本开头的行,并从结果中删除文本

目前,我尝试了以下表达式:

(?!a-zA-Z)\b(\d{11}|\d{14})|(\d{3}\.\d{3}\.\d{3}\-\d{2}|\d{3}\d{3}\d{3}\-\d{2})|(\d{2}\.\d{3}.\d{3}\/\d{4}-\d{2}|\d{2}\d{3}\d{3}\d{4}-\d{2})\b
我能够从结果中删除文本,并找到包含模式的行,但不能只过滤以文本开头的行。举例来说


如何在从结果中删除文本的同时过滤以文本开头的行?

使用负前瞻
(?!a-zA-Z)\b
和您尝试的模式总是正确的,因为下面是一个数字,因此可以省略

如果要匹配所有示例,可以使用锚点断言字符串的开头并匹配字符a-zA-Z的1+倍,后跟空格,而不是使用否定的前瞻
(?!a-zA-Z)
(?:[a-zA-Z]+)?

在所有备选方案周围添加一个组

如果不需要所有捕获组,可以将它们设置为非捕获组
(?:
),但要保留的数字除外

数值在第1组中

^(?:[a-zA-Z]+ )?((?:\d{11}|\d{14})|(?:\d{3}\.\d{3}\.\d{3}\-\d{2}|\d{3}\d{3}\d{3}\-\d{2})|(?:\d{2}\.\d{3}.\d{3}\/\d{4}-\d{2}|\d{2}\d{3}\d{3}\d{4}-\d{2})\b)
请注意,Java要双重转义反斜杠

|


要仅获得3个匹配项,您可以使用

^[a-zA-Z]+ ((?:\d{11}|\d{14})|(?:\d{3}\.\d{3}\.\d{3}\-\d{2}|\d{3}\d{3}\d{3}\-\d{2})|(?:\d{2}\.\d{3}.\d{3}\/\d{4}-\d{2}|\d{2}\d{3}\d{3}\d{4}-\d{2})\b)

|

不太清楚您希望如何解析这些数字。这对您有用吗

  • 首先,它只过滤以文本开头的行
  • 然后删除第一位之前的所有字符
  • 并将它们存储在一个数组中
  • String[]行={
    “测试42702434884”、“测试064352729-13”、“05.994.401/0001-53”,
    “测试134.632.125-03”
    };
    字符串[]已筛选=
    Arrays.stream(lines).filter(k->k.matches(“^\\D+.*)).map(
    s->s.replaceAll(“(^\\D+”,”).toArray(字符串[]:::新建);
    用于(字符串s:已筛选){
    系统输出打印项次;
    }
    
    上面的照片

    
    42702434884
    064352729-13
    134.632.125-03
    

    来自的:“既然正则表达式还没有完全标准化,所有带有这个标签的问题都应该包括一个指定适用编程语言或工具的标签。”你的意思是这样的吗?你的意思是这样的吗?你的意思是这样的吗?你的意思是这样的吗?你的意思是这样的吗?你是这样的吗?你的意思是:既然正则表达式没有完全标准化:由于正则表达式没有完全标准化,因为正则表达式还没有完全没有完全标准化,因为正则表达式还没有完全标准化,既然没有完全标准化,所有带有这个标签的所有带有这个标签的问题的所有带有这个标签的问题都应该还应该包括一个标签的所有带有这个标签的问题还应该包括一个指定适用编程语言的标签指定适用编程语言或工具的标签。你的所有问题都应该包括一个指定适用编程语言或工具。你的标签。你的标签。你的问题。你的所有问题都应该包括一个指定一个指定一个指定适用编程语言。你的标签。你的标签。你的问题。你的意思{4}-\d{2}|\d{2}\d{3}\d{3}\d{4}-\d{2})\b)@nullptr如果您愿意,您可以将第一部分设置为可选的,谢谢您的帮助!这将排除不以文本开头的行,但不会从最终结果中删除文本,例如,现在我将
    测试42702434884
    作为最终结果,是否有办法仅检索
    42702434884
    ?查看您的Java示例,只有一个调整我没有能够执行,那就是我没有能够执行的唯一一个调整,即<代码>05.994.05.994.401/0001-53不应该出现,因为它不是从文本(不是数字)开始的,因为它不应该出现,因为它没有从文本(不是数字)@nullptptptptr这是我在第一个答案中的示例模式。这是我在第一个答案中的第一个答案中的示例模式。这是我在第一个答案中所拥有的示例模式。只有一个调整。只有一个调整的一个调整。只有一个调整。只有一个调整。只有一个调整。只有一个调整。只有一个调整我没有我没有执行一个调整我没有能够执行我没有能够执行。只有一个调整。只有一个调整。只有一个调整。只有一个调整。只有一个调整。只有一个调整。只有一个调整。只有一个调整。只有一个调整我没有我没有能够执行我没有能够执行我没有执行我没有{2}\.\d{3}.\d{3}\/\d{4}-\d{2}|\d{2}\d{3}\d{3}\d{4}-\d{2})\b)请看这个Java演示,懂了!谢谢!