2016-04-05 1 views
3

\p{Punct}を使用して、すべての句読点(アンダースコアを含む)を一致させることができます。正規表現すべての句読点をどのように一致させるかいくつかの条件を除外する方法

そして、私はを除き、をすべて厳密に単語の中に入れないようにしました。これは私が使用しています(?<=[a-zA-Z])'(?=[a-zA-Z])

しかし、私はそれらを一緒に協力して厳密に言葉の中のアポストロフィを除くすべての句読点に一致させることはできませんでした。

どうすればよいですか?


例:

my brother'sこれが一致していなければなりません。

my brothers'これは一致するはずです。

my 'brother'これらは一致する必要があります。

+1

私は、[この回答](http://stackoverflow.com/questions/6279694/is-there-a-way-to-use-ppunct-in-a-考えますregexjava-but-without-the-charac)はあなたの問題を解決します。 '[\ p {Punct} && [^ ']]'だけが必要です。 –

+0

@noobありがとうございます。これは厳密に2つの文字の中にある '' 'の代わりにすべての' 'にマッチするようです。 – AntonZ

+0

有効で無効な例はほとんどありません。 –

答えて

3

ここでは3つの条件を組み合わせることができます。

  1. マッチ[\p{Punct}&&[^']]

  2. マッチ文字が続いていないすべてのアポストロフィを使用してアポストロフィ'以外のすべての句読点。

  3. 文字に先行しないすべてのアポストロフィに一致します。

正規表現:[\p{Punct}&&[^']]|(?<![a-zA-Z])'|'(?![a-zA-Z])

説明:

  • [\\p{Punct}&&[^']]は句読点クラスからアポストロフィを除外します。

  • (?<![a-zA-Z])'は、文字に先行しないアポストロフィと一致します。

  • '(?![a-zA-Z])は、アポストロフィに続けて文字が続きません。

RegexPlanet Fiddle

+0

こんにちは。説明してくれてありがとうございますが、あなたは私の目的を誤解しているようです。私は厳密に言葉の中にあるそれらの '' 'を除いてすべての句読点**にマッチさせたかったのです。私はいくつかの例を提供しました。ありがとう。 – AntonZ

+0

@AntonZ:そうでした。私はあなたがそれにマッチしたいと思った。今私は私の答えを更新したので、明らかです。これは参考になります。 –

+1

ありがとうございます。問題を解剖する非常に巧妙な方法。ありがとう。 – AntonZ

0

アポストロフィを手動で除外したい場合は、関心のあるすべての句読点をグループ化できます。次に、そのグループをルールと組み合わせて、ORによって、アポストロフィー(単語内にない)を検索します。

+0

[正規表現エンジンはすべての仕事](http://stackoverflow.com/questions/6279694/is-there-a-way-to-use-ppunct-in-a-regexjava-but-without-the-charac)。 –

関連する問題