1

正規表現を作成しました:

\b\w+((\w'\b)|('\w\w\b)|(\w'\w\b))

that's、、、などの単語を一致させようとしていyou'reますsomething'

私の問題は、これは一致しているものの、単語全体と一致していないことです。 例としてthat's一致しています。that'

何が間違っているのですか?

これはjavaです。

4

2 に答える 2

1

The issue is the order of your alternations.

The reason that' is matching is because your first alternation is \w'\b. If you changed your first one to \w'\w\b you should find that it will correctly match that's now.

You should check out this page for more information on alternations. Specifically the bottom section covers your issue.

于 2013-02-04T15:30:05.357 に答える
0

Why wont you use simple regex : ([a-zA-Z]*'[a-zA-Z]*)


Demo:

String str = " something' that's you're my";
Pattern p = Pattern.compile("([a-zA-Z]*'[a-zA-Z]*)");
Matcher m = p.matcher(str);
while (m.find()) {
  String match = m.group();
  System.out.println(match);
}

See this demo.

于 2013-02-04T16:06:36.157 に答える