如何从包含搜索字符串的字符串中获取字符序列
How to get a char sequence from String that contains a searched string
我想知道它们是否是 JAVA 中的函数,允许从一个巨大的字符串中检索包含特殊字符的字符序列。
示例:我有一个已字符串化的 php 页面,我检查是否有包含字符“@”的字符序列。如果是这样的话,我只想得到包含搜索到的字符的整个字符序列。
我可以使用 String.contains("@") 来查找字符,但如何获取包含它的字符?
提前致谢!
您可以使用 indexOf and substring 的组合来查找和提取子字符串。
如果没有关于来源和搜索字符串的更多信息,很难进一步帮助您。
您可以使用基于
的正则表达式
"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 );
}
可以重复调用 find 以查找所有匹配项。
有关匹配电子邮件地址的正则表达式的讨论,请参阅 another SO Q+A。
既然已经采用了正则表达式的想法,这里有另一种方法
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); }
}
我想知道它们是否是 JAVA 中的函数,允许从一个巨大的字符串中检索包含特殊字符的字符序列。
示例:我有一个已字符串化的 php 页面,我检查是否有包含字符“@”的字符序列。如果是这样的话,我只想得到包含搜索到的字符的整个字符序列。
我可以使用 String.contains("@") 来查找字符,但如何获取包含它的字符?
提前致谢!
您可以使用 indexOf and substring 的组合来查找和提取子字符串。
如果没有关于来源和搜索字符串的更多信息,很难进一步帮助您。
您可以使用基于
的正则表达式"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 );
}
可以重复调用 find 以查找所有匹配项。
有关匹配电子邮件地址的正则表达式的讨论,请参阅 another SO Q+A。
既然已经采用了正则表达式的想法,这里有另一种方法
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); }
}