3

正規表現を使用すると、次のような\*\*([^\*]*)\*\*内の複数のテキスト グループに一致させることができます。**

this **is** a **test**

is&を返しtestます。

文字列が与えられた場合that's **right * a test**、式を調整して返すにはどうすればよいright * a testですか? *1 つではなく2 つの を除外する式を取得するにはどうすればよいですか?

http://regex101.com/r/aD3pC2

4

5 に答える 5

8

消極的な量指定子を使用できます.*?

\*\*.*?\*\*

正規表現エンジンでサポートされていると仮定します。

于 2013-08-07T18:28:19.287 に答える
1

次を使用しorます。

\*\*((?:[^*]|\*[^*])*)\*\*

一致するグループ内では、これは星ではない文字、または星の後に星以外が続く文字と一致します。二重星 ( )の最初の**出現は、文字列リテラルの終わりを示すと見なされます。文字列の内容が ( のように**my string ends with a star***) アスタリスクで終わることを意図している場合、私の正規表現は一致に最後のアスタリスクを含めません (そのため、文字列の内容は単に " my string ends with a star" になります)。しかし、私はそれが今説明したように有効だと思います。

ただし、文字列リテラルが のようなスターで始まる場合、文字列コンテンツにスターが含まれます。これは、 の最初の出現が文字列リテラルの開始をマークし、次のシングルがコンテンツの一部である***Star Power!**ため、これも有効だと思います.***

また、(ほとんどの実装では) 文字クラス内で星をエスケープする必要がないことに注意してください。

于 2013-08-07T18:27:22.230 に答える
0

消極的な量指定子を使用したくない場合は、これを使用できます。

\*\*((?:[^*]|[*](?=[^*]))+)\*\*

説明: これは、'**' のペアの間に '*' が続かない、'*' または '*' 以外の任意の文字に一致します。

于 2013-08-07T18:44:28.407 に答える
0

次のパターンを使用できます。

 \*\*((?:[^*]|[^*]\*[^*])*)\*\*

これは、任意の文字のペアに一致し、その後に 以外の文字または以外の文字で囲まれ*た 0 個以上の任意の文字が続き、その後に別の文字のペアが続きます。****

于 2013-08-07T18:28:11.360 に答える