我有这个长字符串(它是一个长而连续的字符串):
Home address H.NO- 12 SECTOR- 12 GAUTAM BUDH NAGAR NOIDA- 121212, UTTAR PRADESH INDIA +911112121212 Last Updated: 12-JUN-12 Semester/Term-time Accommodation Type: Hall of residence (private provider) Semester/Term-time address A121A SOME APPARTMENT SOME LANE CITY COUNTY OX3 7FJ +91 1212121212 Last Updated: 12-SEP-12 Mobile Telephone Number : 01212121212
如果您查看上面的字符串,则可以生成以下模式:
<home_address_text><space><the_address><space><last_updated_text><last_updated_date><space><accomodation_type_text><accomodation_type><space><semester_time_address_text><semester_time_address><space>last_updated_text><last_updated_date><space><mobile_number_text><mobile_number>
我想提取此字符串的特定部分,例如: 1. H.NO- 12 SECTOR- 12 GAUTAM BUDH NAGAR NOIDA- 121212, UTTAR PRADESH INDIA 2. Hall of residence (private provider) 3. A121A SOME APARTMENT SOMELANE CITY COUNTY OX3 7FJ 4. 01212121212
该信息是可变的,因此它因人而异,因此我不能只计算长度并使用子字符串来提取它,因为整个字符串和我要提取的部分的长度都是可变的。
如上所述,如何使用Java提取字符串的特定部分?很久以来我一直在寻找方法,但是找不到方法。任何帮助将不胜感激
根据您的(单个)示例,这对我有用。学会对正则表达式使用勉强的修饰符。在这种情况下,它们会为您提供很多帮助。
例如,要获取与第一部分匹配的字符串:"Home address (.+?) \+\d+ Last Updated:
此正则表达式将不会跳过我们不需要的“最新更新”字符串或“ + dd”(数字)。正则表达式“(。+?)”是不情愿的(不是贪婪的),不会跳过+号或数字,从而使其与其余表达式匹配。
您可以使用它来匹配由静态文本包围的正则表达式中的子字符串。在这里,我正在使用捕获组来查找所需的文本。(捕获组是括号中的部分。)
class Goofy
{
public static void main( String[] args )
{
final String input
= "Home address H.NO- 12 SECTOR- 12 GAUTAM BUDH NAGAR " +
"NOIDA- 121212, UTTAR PRADESH INDIA +911112121212 " +
"Last Updated: 12-JUN-12 Semester/Term-time " +
"Accommodation Type: Hall of residence (private " +
"provider) Semester/Term-time address A121A SOME " +
"APPARTMENT SOME LANE CITY COUNTY OX3 7FJ +91 " +
"1212121212 Last Updated: 12-SEP-12 Mobile Telephone " +
"Number : 01212121212";
final String regex = "Home address (.+?) \\+\\d+ Last Updated: " +
"\\S+ Semester/Term-time Accommodation Type: (.+?) " +
"Semester/Term-time address (.+?) \\+\\d\\d \\d+ " +
"Last Updated.+ Number : (\\d+)";
Pattern pattern = Pattern.compile( regex );
Matcher matcher = pattern.matcher( input );
if( matcher.find() ) {
System.out.println("Found: "+matcher.group() );
for( int i = 1; i <= matcher.groupCount(); i++ ) {
System.out.println( " Match " + i + ": " + matcher.group( i ));
}
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句