2016-08-13 13 views
0

英語の単語境界を識別するJavaScriptの正規表現を探していますが、ハイフンとアポストロフィを受け入れる一方で、単独で、または単語の最初または最後に。単語境界のJavaScript正規表現で、単語内ハイフンとアポストロフィを使用する

たとえば、文の場合...
彼女は言った - 「それはすべて、2つのフライ。
...私が検出されるには、以下の灰色で表示文字が欲しい:
彼女が'LL私は正規表現/[^A-Za-z'-]/gを使用する場合は、「緩い」すべて,二フライ.'

こと- 'を言いましたハイフンとアポストロフィが検出されません。それは両側の単語文字を持っていないアポストロフィやハイフンを検出するように

がどのように私は私の正規表現を変更することができます「それはすべて,二フライ.ことよ」から
彼女を言いました?

あなたがここに私の正規表現をテストすることができ

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

注:単純にしているすべての文字を含めることは可能ではありませんので、私が働いされるテキストはอไทрускийのように、他の書き込みスクリプトを含んでもよく、英語の単語の一部ではありません。

+0

多分 '[^ A-Za-z ' - ] [ - ]?' ... –

+0

あなたは文章の "That'll be all"の部分にスペースを入れていませんか?含まれていてはいけませんか? –

答えて

2

から{からのすべての文字。 は一人ですることはできません

  1. 文字。
  2. 文字です。

あなたの例で動作する正規表現は次のようになります。

[\s.,'-]{2,}|[\s.] 

Regex101 Demo

今残っているすべては、それがすべてをフィットするまで、これらの二つのグループにすべての非単語文字を追加し続けることですあなたの要望。だから、それらの文字クラスに記号や句読点を追加することができます。

+0

あなたのアプローチは理解しやすいです。それを@ t.nieseの答えと組み合わせて、一重引用符とハイフンの先頭を検出する方法を追加すると、^ [' - ] | [\ s! - /: - @ \ [ - '\ { - 〜' - ] {2、} | [\ s! - /: - @ \ [ - '\ { - 〜]' –

1

あなたはそのような何か書くことができます:

(\s|[!-/]|[:[email protected]]|[\[-`]|[\{-~])*\s(\s|[!-/]|[:[email protected]]|[\[-`]|[\{-~])* 

またはコンパクト版:

(\s|[!-/:[email protected]\[-`\{-~])*\s(\s|[!-/:[email protected]\[-`\{-~])* 

ザ・regexpは1 \s(空白文字)を必要とする前と後のALSスペースと英数字以外の文字を選択しますそれ。

https://regex101.com/r/bR8sV1/4

  • \s試合すべてのスペース
  • !-/
  • [から ``から :から @
  • \[-``すべての文字に/
  • :[email protected]すべてのCHARへ!からのすべての文字
  • \{-~次の2つのグループにあなたのワード境界文字を整理することができ~
+0

それでも、単語の途中で '-'や' ''とマッチします。 – 4castle

+0

@ 4castleああ、私は質問のその部分を見ていない。 –

関連する問題