Pattern p = Pattern.compile("[\\w\\.]+\\sat\\s[\\w\\.]+");
Web ページの次の 3 行に一致します。
dave.andersen at gmail.com
appear at SOSP
staring at now
ただし、最初の行だけを一致させたいです。dot
の両側に少なくとも 1 つあることを指定する方法はありますat
か?
\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
これを試すことができるかもしれません
\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]+$
「+」を使用して少なくとも 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 は、単語の文字とピリオドの任意の組み合わせに一致します。