2017-08-30 11 views
1

あるテキストに大文字の単語を見つけようとしています。言葉は一つずつ考えなければならず、それらは少なくとも4つでなければなりません。正規表現を使ってテキストの大文字を取り込む

私は「ほとんど」動作するコードを持っていますが、それ以上のものをキャプチャします:[A-Z]*(?: +[A-Z]*){4,}。また、キャプチャグループには、境界のような単語の先頭または末尾にスペースが含まれます。 https://regex101.com/r/BmXHFP/2

最初の文で唯一の単語例キャプチャで正規表現を作るための方法があります:あなたはそれをテストしたい場合は

私は遊び場がありますか?私が使っている言語は Goであり、ルック・バック/先がありません。

答えて

2

、あなただけの+ための第二*を変更する必要があります。

​​

説明

(?: +[A-Z]*)を使用している間、あなたは "0+文字続いスペース" matchinています。あなたはスペースにマッチしています。 *+に置き換えるときは、大文字の後にスペースがある場合に一致します。

Demo on regex101

+0

良いキャッチです。どのようにしても、スペースではなく文字で始まることを確認できますか? –

+0

@RomeoMihalceaもちろん、最初の '* 'も' + 'に変更してください! ;-) – Mistalis

+1

私は気が気になる、ありがとう! –

1

*+で置き換えます。正規表現は、最初の文の単語と一致します。

.*も空の文字列と一致します。正規表現を見て、両方ともを無視すると、残っているのはスペースのシーケンスです。 +を使用すると、少なくとも今度は少なくとも1つの大文字の文字が存在することが確認されます。あなたの正規表現で

1

あなたは[A-Z]*(?: +[A-Z]+){4,}regexを更新見るように、少なくとも1上部ケースをマークしなければなりませんでした。

良好正規表現もスペースなしで少なくともアッパーケースにできるように表示されますregex

*[A-Z]*(?: *[A-Z]+){4,} .see良好ような非スペースを可能にするであろう。

関連する問題