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
也可以被解析)