1

私は確かに正規表現の人ではありませんが、通常、何かを回避する方法を理解できます。これは私を困惑させました...

オプションの先行スペースを持つ str (>>) よりも大きい double を一致させて置き換える必要があります。これが機能しないことはわかっていますが、次のようなものです...

/\s\s+[>>]/

しかし、それは明らかに良くありません。

助けていただければ幸いです。このサイトは何年にもわたって私にとって素晴らしいリソースであり、私が今何かを投稿するようになったばかりだとは信じられない.今まで:) よろしくお願いします。

4

7 に答える 7

1

>> 文字列内と先頭の空白の両方については、次を試してください。

/(\s*)(>>){1}/
于 2013-03-14T21:43:26.353 に答える
0

あなたの例を分解する:

  1. \s任意の空白文字に一致します
  2. \s+1 つ以上の空白文字に一致します
  3. [>>]1つに一致>します(これについては以下を参照)

したがって、式は>少なくとも 2 つの空白文字が先行する a に一致します。

ゼロ以上に一致させたい場合は*、 ;を使用する必要があります。フェックス\s*

角括弧は文字のセットを示すために使用され、セット内の任意の文字に一致します。fex[abc]は、a、b、または c に一致しますが、一度に 1 文字だけに一致します。

正規表現の単一文字はその文字と一致します。fex>は 1 つの大なり記号に一致します。

まとめると、次の正規表現が得られます。

/\s*>>/
于 2013-03-14T21:50:45.953 に答える
0

これを使って :

str.replace(/\s+>>/g, 'whatever'); 
于 2013-03-15T07:33:25.960 に答える
0

これは、オプションのスペースで機能するはずです。

/\s{0,}>>/g

一致をテストするには、このリンクにアクセスしてください。

于 2013-03-14T21:53:22.713 に答える
0

スペースをオプションにしたい場合は、次のようにするだけです。

/>>/

gそして、修飾子を使用して置換パターンとして使用できます:

str = str.replace(/>>/g, 'something') 

文字列が >> であり、前にスペースがあることを確認したい場合は、次を使用します

/^\s?>>$/
于 2013-03-14T21:35:42.927 に答える
0

この正規表現は機能するはずです。

/\s*[>]{2}/

これはきれいです

/\s*>>/

テスト済み:

var pattern = /\s*>>/;
s1 = "             >>";
s2 = ">>";
s3 = ">> surrounding text";
s4 = "surrounding  >> text";
s5 = "surrounding>>text";

s1.match(pattern);
["             >>"]
s2.match(pattern);
[">>"]
s3.match(pattern);
[">>"]
s4.match(pattern);
["  >>"]
s5.match(pattern);
[">>"]

置換え例

var pattern = /\s*>>/;
var s6 = "    >> surrounding text";
s6.replace(pattern, ">");
"> surrounding text"
于 2013-03-14T21:36:09.353 に答える
0

無制限の量の先頭のスペース文字と一致させたい場合:

/ *>>/

先頭の空白文字 0 個または 1 個と一致させたい場合:

/ ?>>/
于 2013-03-14T21:44:06.593 に答える