我想知道它们是否是JAVA中的一个函数,它允许从一个巨大的字符串中检索包含特殊字符的char序列。
示例:我有一个PHP页面,我已经进行了字符串化,并检查是否存在包含char" @"的char序列。如果是这样的话,我想得到包含搜索过的字符的整个字符序列。
我可以使用String.contains(" @")查找char但是如何获取包含它的char?
提前致谢!
答案 0 :(得分:2)
您可以使用基于
的正则表达式“mailto =(test@mail.com)”
如果在字符串化的php中找到了这个,你可以方便地提取带括号的部分。
但很可能它也可能是foo@bar.com
,所以你可能不得不写一个更复杂的正则表达式,但它的工作方式相同。
这是与任何有效电子邮件地址匹配的版本:
"mailto = ([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+(?:\\.[A-Za-z]){1,3}\\b)"
也许=
之前和之后的空格无法保证,因此您可以将它们设为可选:
"mailto ?= ?(...)"
要执行匹配,请使用
Pattern pat = Pattern.compile( "mailto = ([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+(?:\\.[A-Za-z]){1,3}\\b)" );
并且,使用字符串中的php,您可以执行
String php = ...;
Matcher mat = pat.matcher( php );
if( mat.find() ){
String email = mat.group( 1 );
}
可以重复调用查找以查找所有事件。
有关与电子邮件地址匹配的正则表达式的讨论,请参阅another SO Q+A。
答案 1 :(得分:1)
由于已经采用了正则表达式的想法,这是另一种方法
String test = "abc 123 456@789 abcde";
String charToFind = "@";
String strings[] = test.split(" ");
for( String str : strings ){
if( str.contains(charToFind) ){ System.out.println(str); }
}
答案 2 :(得分:0)