Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 乱七八糟的绳子。用于排除'的正则表达式@';到头来_Java_Regex_Pattern Matching_String Matching - Fatal编程技术网

Java 乱七八糟的绳子。用于排除'的正则表达式@';到头来

Java 乱七八糟的绳子。用于排除'的正则表达式@';到头来,java,regex,pattern-matching,string-matching,Java,Regex,Pattern Matching,String Matching,我有一个非常混乱的字符串数组,它没有遵循任何特定的模式 基本上,是用户的属性搞砸了(所有信息都在一个字符串中,没有遵循任何模式) 我对两个特殊属性(电子邮件和数字)感兴趣。 我找到了一种获取电子邮件的方法,并认为以下正则表达式: ^9[0-9]{9} 适用于用户的手机。然而,有些用户确实有等同于电话号码+“@”之类的电子邮件。这似乎是个问题 所以,我需要一个正则表达式,它将排除以下内容,只给我一个数字 9876548877@ 我试过了 ^9[0-9]{9}((?!@)。{0})*$“ 并在此

我有一个非常混乱的字符串数组,它没有遵循任何特定的模式

基本上,是用户的属性搞砸了(所有信息都在一个字符串中,没有遵循任何模式)

我对两个特殊属性(电子邮件和数字)感兴趣。 我找到了一种获取电子邮件的方法,并认为以下正则表达式:

^9[0-9]{9}
适用于用户的手机。然而,有些用户确实有等同于电话号码+“@”之类的电子邮件。这似乎是个问题

所以,我需要一个正则表达式,它将排除以下内容,只给我一个数字

9876548877@
我试过了

^9[0-9]{9}((?!@)。{0})*$“

并在此处获得完全匹配:

9876548877
但是,只有当字符串中不包含除此之外的任何内容时,它才能很好地工作

我试图实现的目标是在字符串中准确获取电话号码,如下所示:

/* mess mess mess*/ John Doe Jr email: 9876548877@jdoe.com, phone number: 9876548877, /* more mess */
我该怎么做?提前谢谢

UPD:

先生们,谢谢你们的回答,但任务有点不同

例如,我从中提取一个正则表达式,然后对其进行测试,得到结果。我正试图实现相同的行为,但使用电话号码,而不使用“@”,以确保它正是我要寻找的


这个问题没有正确描述。我的错。

您可以使用lookarounds来声明左侧的内容不是非空格字符,右侧的内容不是@:

(?<!\S)9[0-9]{9}(?!\@)
(?


例如,如果在数字前面可以有一个
,你可以在开始时省略后面的查找,并使用一个单词边界
\b

,这有点模糊。你能提供更多的例子来说明你试图完成什么吗?就如
9\d{9}(?!@
9\d{9}(?=\,)
,甚至
(?)对于这样的“混乱局面“您是否评估过使用特定于域的语言(DSL)创建一个简单的解析器,如Antlr4?它将比使用小代码的正则表达式(即
john655493098@doe.com
也可以被解析)