1

私の文字列は次のようなものです:

str1="<accountName>THOMAS M PINCHBECK</accountName>";

正規表現を使用して名前を取得しようとしています: THOMAS M PINCHBECK

私が試したのは:

str2= str1.matches("<accountName>"+"(.*)"+"</accountName>");

しかし、これはうまくいきませんでした。どんな助けでも大歓迎です.. !!

4

3 に答える 3

3

ではなく、返品のmatches(...)方法です。次のように修正できます。StringbooleanString

String str = "<accountName>THOMAS M PINCHBECK</accountName>"+
    "<accountName>Hello world</accountName>"+
    "<accountName>Quick brown fox</accountName>";
Pattern p = Pattern.compile("<accountName>([^&]*)</accountName>");
Matcher m = p.matcher(str);
while (m.find()) {
    System.out.println(m.group(1));
}

ideone のデモ。

于 2013-11-08T19:05:26.157 に答える
1

使用String#replaceFirst:

String str = "<accountName>THOMAS M PINCHBECK</accountName>";

String repl = str.replaceFirst("^<accountName>([^&]+).*$", "$1");
//=> THOMAS M PINCHBECK
于 2013-11-08T19:05:18.697 に答える
0

次の正規表現を検討してください...

(?<=&gt;).*?(?=&lt;)
于 2013-11-08T19:11:47.650 に答える