[英]How to check order of occurring of strings using java regular expression patterns?
[英]Regular Expression in Java: How to refer to “matched patterns”?
我正在閱讀Java正則表達式教程,似乎只是在教您測試模式是否匹配,但沒有告訴我如何引用匹配的模式。
例如,我有一個字符串“我的名字是xxxxx”。 而且我想打印xxxx。 我將如何使用Java正則表達式來做到這一點?
謝謝。
您正在閱讀什么教程? 太陽是一個非常徹底解決這個問題的人,但是您必須正確閱讀它:)
捕獲字符串的一部分是通過括號完成的。 如果要捕獲字符串中的組,則必須將正則表達式的這一部分放在括號中。 按括號顯示的順序定義組,索引為0的組代表整個字符串。
例如,正則表達式“ Day([0-9] +)-Note([0-9] +) ”將定義3個組:
至於實際的代碼以及如何檢索您在正則表達式中定義的組,請查看Java文檔,尤其是Matcher類及其組方法: http : //java.sun.com/j2se/1.5。 0 / docs / api / java / util / regex / Matcher.html
您可以使用該非常有用的工具來測試正則表達式: http : //www.cis.upenn.edu/~matuszek/General/RegexTester/regex-tester.html
希望這會有所幫助,干杯
請注意模式和Matcher
的group()
方法中括號的使用
import java.util.regex.*;
public class Example {
static public void main(String[] args) {
Pattern regex = Pattern.compile("My name is (.*)");
String s = "My name is Michael";
Matcher matcher = regex.matcher(s);
if (matcher.matches()) {
System.out.println("original string: " + matcher.group(0));
System.out.println("first group: " + matcher.group(1));
}
}
}
輸出為:
original string: My name is Michael
first group: Michael
您可以使用Matcher
group(int)
方法:
Pattern p = Pattern.compile("My name is (.*)");
Matcher m = p.matcher("My name is akf");
m.find();
String s = m.group(1); //grab the first group*
System.out.println(s);
輸出:
akf
*查看匹配組
Matcher m = Pattern.compile("name is (.*)").matcher("My name is Ross");
if (m.find()) {
System.out.println(m.group(0));
System.out.println(m.group(1));
}
父母組成了一個俘虜小組 。 組0是整個模式,組1是反向引用 。
上面的程序輸出:
name is Ross
Ross
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.