2017-06-03 8 views
-3

に私は与えられたテキストが英語であるかどうかが、私は次を含めるかどうかを検出することができます正規表現パターンが必要です。英語正規表現のC#

  • スペース
  • は、数字や言葉を許可許可を
  • すべての特殊文字を許可、複数の行やタブ
  • を許可
  • @の#​​$%^ & *()_- + = {} |/<>〜 ` ':"; []
  • 許可するURL、Eメール
  • テキストに英語以外の文字が含まれている場合は、英語以外のテキストとみなす必要があります。テキストに「بت...など」などのアラビア語の文字/フランス語 "é、â...など"と他のすべての言語

簡単に言えば、任意の形式のテキストが英語であるかどうかを知る必要があります。私はパターンをたくさん試しましたが、私はそれを得ていませんでした。実際、アプリケーションはオフラインで使用されるため、言語検出器を使用する必要はありません。受理すべきではないテキストの

サンプル:

こんにちは! ...

مرحبابك

للتحميلاضغطهنا... http://www.google.com

テキストは英語以外の文字が含まれているのであれば、それは考慮されるべきである英語以外のテキストé。

+0

ところで、私は「、 "\ P {IsArabic}" は、以下のパターンを使用してみました^ [A- zA-Z0-9&。\:/ - ] + $ "、"^[\ x20- \ x7E] + $ "、" [A-Za-z0-9。、 - = +(){}!@#$ %^&* _ [\] \\] "...しかし、すべてが私に間違った結果をもたらします。 –

+2

カフェは英単語ですが、多くの言語は英語でも使われている文字の文字を持っています...とにかく、Unicodeカテゴリを調べます。 a-zでない文字を確認することができます。 – Ryan

+5

あなたは正規表現からあまりにも多くの単語を探し出し、言語の検出をいくらか簡略化しています。 ***これは正規表現のためのものではありません***本当に。なぜ、[英語の単語リスト](http://www-01.sil.org/linguistics/wordlists/english/wordlist/wordsEn.txt)を読み込んで、あなたのテキストの中のいくつの単語が一致するのかを比較するのはなぜですか? – spender

答えて

0

私はそれを見つけたと思う、私は基本的なラテン語Unicodeカテゴリを試して、それは今まで正常に動作します。私が使用:

"^[\u0000-\u007F]+$" 

そのアイデアは、与えられたテキストは英語であり、英語のみの文字を使用して書かれている、加えて、それは特殊文字を許可するかどうかのチェックについてです。だから、与えられたテキストが "カフェで私の友人に会った"のようなものだったならば、英語のテキストではないと見なされます。 ..これはまさに私が必要としていたものでした。
ありがとうございます。


資源:

0

これは動作するはずです:

@"[^\t\w\d\s$-/:-?{-~!"^_`\[\]]+" 

を一致がある場合は、英語以外の文字/文字があります。

英語を話す人が普通に使っている文字だけがテキストに含まれているかどうかをテストしています。 言語を検出するには、自然言語処理は必要ですが、正規表現は必要ありません。

+0

'\ s'はすでにタブ(とスペース/改行)にマッチしていると信じています。' \ w'はすでに数字にマッチしているので、 '\ t'や' \ d'は必要ありません。 – sweaver2112

+0

@ sweaver2112 yeaあなたは正しいよ – ed9w2in6

+0

@ ed9w2in6うまく動作しなかった –

0

正規表現に英単語のすべての単語が含まれていれば理論的に可能です。

英語以外の文字を検出する正規表現を作成できます。それは確かに英語ではないテキストを検出しますが、確かにそれを確認することはできません。