私は句読点や空白を除いた文の最初の単語にマッチする正規表現を探しています。たとえば、「This is a sentence。」の「This」です。そして、で「最初の」Hello「最初は、私は\言いたい」\「」正規表現で最初の単語を一致させる
をこれは動作しません:!
"""([A-Z].*?(?=^[A-Za-z]))""".r
私は句読点や空白を除いた文の最初の単語にマッチする正規表現を探しています。たとえば、「This is a sentence。」の「This」です。そして、で「最初の」Hello「最初は、私は\言いたい」\「」正規表現で最初の単語を一致させる
をこれは動作しません:!
"""([A-Z].*?(?=^[A-Za-z]))""".r
[a-z]+
それが最初に取得されますので、これは十分なはずaz文字(大文字小文字を区別しないと仮定)。
それが動作しない場合は、[a-z]+\b
、または^[a-z]\b
でも試すことができますが、最後の文字列は単語で始まるものとみなされます。
あなたは、この正規表現を使用することができます。
キャプチャされたグループで最初の単語が見つかります。
この正規表現は、^[^\s]+
または^[^ ]+
です。
これは古いスレッドですが、私のように人々がこれを必要とするかもしれません。 あなたの文章が1つ以上の空白で始まっている場合、上記のどれも動作しません。 私は、文の最初の(非空の)単語を取得するためにこれをした:
(?<=^[\s"']*)(\w+)
説明:文字列の先頭を探すために
(?<=^[\s"']*)
肯定後読み、ゼロ以上の空白が続きます(角括弧の間にさらに追加することはできますが)マッチには含めないでください。
(\w+)
彼らは後読みを満たさないとして、文の次の単語が一致しない
を返される単語、実際の試合。
これは正規表現の味ですか? –
単語に数字が入っていますか?しかし、それは非ラテン文字ではすばやく失敗するので、[Unicode文字クラスを使用する](http://www.windowsfiles.jp/privacy/)に更新してください。 – endy
'([az] +)'は大文字と小文字を区別しません。 //stackoverflow.com/a/5005122/166390)必要に応じて!これはNFAの正規表現(Ruby:Dのようなもの)を前提としていることに注意してください。これは、できるだけ最初のものにマッチしますが、アンカーや複雑なルックアラウンドを必要としないのでここではうまくいきます。 –