0
Pattern p = Pattern.compile("[\\w\\.]+\\sat\\s[\\w\\.]+");

Web ページの次の 3 行に一致します。

dave.andersen at gmail.com
appear at SOSP
staring at now

ただし、最初の行だけを一致させたいです。dotの両側に少なくとも 1 つあることを指定する方法はありますatか?

4

3 に答える 3

1
\w+\.\w+\s+at\s+\w+\.\w+

一致する

gmail.comのdave.andersen

だがしかし:

SOSPに登場

また:

今見つめている

編集:

\w+\.[\w\.]+\s+at\s+\w+\.[\w\.]+

一致data.anderson at gmail.comし、my.fair.lady at gmail.com

于 2012-12-09T05:40:01.383 に答える
0

これを試すことができるかもしれません

\w+\.\w+\sat\s\w+\.\w+

これにより、「。」言葉の間に現れます。

これは、"at" の前後の 1 つのドットに正確に一致するように再定義されたバージョンです。

あなたはそれを置き換えることができます

^[a-zA-Z0-9]+\.[a-zA-Z0-9]+\sat\s[a-zA-Z0-9]+\.[a-zA-Z0-9]+$
于 2012-12-09T05:41:35.717 に答える
0

「+」を使用して少なくとも 1 つを示すのは正しい考えですが、「[\w\.]+」を使用すると、単語の文字またはピリオドの任意の文字列に一致します。

これは、「foo.bar at foo.bar」または「foo..bar at foo..bar」のようなものに一致します。

Pattern p = Pattern.compile("\\w+\\.+\\w+\\sat\\s\\w+\\.+\\w+");

これは、「foo.bar at foo.bar」や「foo.bar.bar at foo.foo.bar」などに一致します。

Pattern p = Pattern.compile("\\w+\\.[\\w\\.]+\\sat\\s\\w+\\.[\\w\\.]+"

"\w+\.+\w+" と "[\w\.]+" の違いは、最初の形式は少なくとも 1 つの単語文字の後に少なくとも 1 つのピリオドが続き、その後に少なくとも 1 つの単語文字が続くのに対し、2 番目の形式は少なくとも 1 つの単語文字に一致することです。 form は、単語の文字とピリオドの任意の組み合わせに一致します。

于 2012-12-09T05:48:34.897 に答える