2017-04-17 5 views
0

重要な単語と名前を文字列で検索したい。Javascripts Regex。重要な単語と名前を文字列で検索する

  1. 名(ジョン・デュー)のよう
  2. すべての資本・ワード(重要な意味):。FBI
  3. は後に言葉を見つけるべきではありません、?!それが名前の場合を除いて、それは名前のようなCapitalを持つ2つ以上の単語を意味する:Jon Dewまたは長い重要(National String Instrument Corporation)大文字の4つの単語は、それが重要なことは明らかです。

私はこの正規表現を持っていますが、悪くはありませんが、ドットの後に単語を除外しません。ドットの後に始まる名前を受け入れるべきである。

\B.\s(([A-Z][A-Za-z0-9]*\s)?[A-Z][A-Za-z0-9]*)\b 

https://regex101.com/r/TSjtMp/2

+2

文章が* "** Trump **には意図がないと言われたら..." * - あなたの根拠に基づいて、トランプは強調表示されません。あれは正しいですか?大文字小文字を調べることによって、名前ではない/しないことを判断する馬鹿な方法はありません。 「文頭に2つの大文字の単語がある」というあなたの方法は、あなたを近づけますが、方法には明らかな限界があります。 – Santi

+0

はい、重要な単語は大文字で始まります。それが重要な単語かどうかを知ることは不可能なので、ドットや疑問符の後にある場合を除きます。 – Gino

+0

だから、それは頭字語(頭字語であることを前提にして)と2つの連続した大文字の単語(それは名前であることを前提にしている)で見つかるはずです – amflare

答えて

1

これは、より多くの答えよりも大きいのコメントのようなものですが、私はより良いフォーマットを持つことができますので、答えとしてこれを掲示します。

正確な正規表現を使用して、私は破棄正規表現テクニックを思いつくことができます。

discard patt1 | discard patt2 | discard pattN | (capture this) 

enter image description here

:、それは言葉は、例えば、ドットの後に「トランプ」が重要であるかどうかを知るために、実際に「不可能」である のでまたは「彼らは、」あなたは、実際にこのようなパターンを作成することができます

アイデアはあなたが望まないパターンの連鎖を持つことですが、最後のパターンは実際にあなたが望むものであり、キャプチャグループからコンテンツを取得する必要があります。下記のリンクあなたはこのアイデアの例を見ることができます

A|The|This|(\b(?:[A-Z][A-Za-z0-9]*\s)?[A-Z][A-Za-z0-9]*\b) 

:例えば

Working demo

あなたは上記の例では、あなたがしたくない単語を破棄するためにパターンを使用することができます私はちょうどATheThisを持つパターンを破棄しています。 Theodoreがある場合は重要ではありませんが、少なくとも廃棄するパターンは定義できますので、これは単なるアイデアです。

+0

私はFederico Piazzaが最良のアプローチを取っていることに同意します。これまでとは異なるシナリオでこれを試しました。 あなたが行うことができる最善のことは、チェックできる「重要」ルールに対する例外である単語のリストを提供することです。 残念ながら、これは非常に大きなリストになります。あなたは考慮する必要があります:しかし、(Un)幸いなことに、First(ly)、結果、正直なところ...私は何度も続けることができます。 しかし、すべての重要な単語を定義するのに必要な辞書よりも小さなリストです - (それでも十分ではありません)。 –

+0

非常によく見る:) – Gino

+0

私はそれが3つの言葉を見つけられないと分かりました:National String Instrument Corporation – Gino

関連する問題