私の正規表現:
(?<=span class="ope">)[a-z0-9]+?\.(pl|com|net\.pl|tk|org|org\.pl|eu)|$(?=<\/span>)$
現時点では、文字列がテキストの先頭にある場合にのみ一致し、途中にある場合は失敗します。
例えば。
Something example.com
- 不合格
example.com Something
- 成功 (example.com
見つかりました)。
これに対する解決策はありますか?
テスト済みのソリューションは次のとおりです。
(?<=span class="ope">).*?(?P<domain>\w+\.(?:pl|com|net\.pl|tk|org|org\.pl|eu)).*?(?=<\/span>)
domain
必要なドメインのキーを返します。ここで試してみてください: http://www.regex101.com/r/mK1fP0
二人の後ろ姿の問題。2 番目のものは、代わりに先読みでなければなりません。また.*?
、ドメインの周りのいくつかのものと一致するように、いくつかを2回挿入しました。
(?<=span class="ope">).*?([a-zA-Z0-9]*\.(pl|com|net\.pl|tk|org|org\.pl|eu)).*(?=<\/span>)
テスト: http://www.regex101.com/r/wK0aA2
これを使用する場合、グループ 0 ではなくグループ 1 を引き出す必要があります。
これを試して
(?<=span class="ope">)[a-zA-Z0-9\s]*[a-z0-9]+?\.(pl|com|net\.pl|tk|org|org\.pl|eu)|$(?=<\/span>)$