从匹配器获取字符串的特定部分

时间:2012-02-22 00:35:21

标签: java regex pattern-matching

我想从Matcher得到匹配字符串的一部分,如下所示:

Pattern pat = Pattern.compile("a.*l.*z");
Matcher match = pat.matcher("abcdlmnoz"); // I'd want to get bcd AND mno
ArrayList<String> values = match.magic(); //here is where your magic happens =)

ArrayList<String>仅适用于此示例,我很乐意接收List或单个String项。最好的是.htaccess个文件和RewriteRule的文件:

RewriteRule (.*)/path?(.*) $1/$2/modified-path/

好吧,将那些(。*)放入$ arguments会像ArrayList一样酷或分别访问String。我一直在寻找Java Matcher API的东西,但我内心没有看到任何有用的东西。

先谢谢你们。

3 个答案:

答案 0 :(得分:2)

您可以使用(_)

在正则表达式匹配中捕获组
Pattern pat = Pattern.compile("a(.*)l(.*)z");
boolean b = match.matches(); // don't forget to attempt the match

然后使用match.group(n)获取捕获的那部分。这些组存储在match对象中。

答案 1 :(得分:1)

查看匹配器的“组”方法并仔细阅读您链接到的文档以获取对组的引用,这是正则表达式中的括号所做的:)

答案 2 :(得分:1)

...

String testStr = "abcdlmnoz";
String myRE    = "a(.*)l(.*)z";

Pattern myRECompiled = Pattern.compile (myRE, 
                                        DOTALL);
Matcher myMatcher    = myRECompiled.matcher (testStr);

myMatcher.find ();

System.out.println (myMatcher.group (1));
System.out.println (myMatcher.group (2));

...