1

私は、カレットの間にある、カレットよりも小さいテキストと大きいテキストの間にあるすべてのテキストに一致する正規表現を使用しようとしています。

したがって、次のようになります。^<選択したいテキスト>^

私はこのようなことを試しましたが、機能していません:^ <(。*?)> ^

これは可能だと思いますよね?私がこんなに苦労しているのは、カレットが数量詞として機能しているからだと思います。私が得るどんな助けにも感謝します!

アップデート

誰もが知っているように、彼らは私が働いていないからフォローしています

 /\^<(.*?)>\^/

しかし、.innerHTMLプロパティを使用して文字列を取得していたため、htmlエンティティを取得していたことが判明しました。言い換えると、

> ... &gt;
< ... &lt;

これを解決するために、私の正規表現は実際には次のようになります。

\^&lt;(.*?)((.|\n)*)&gt;\^

これには、間にある文字列が任意の文字または改行である必要があるという事実が含まれます。ありがとう!

4

2 に答える 2

4

^JavaScript正規表現では特別な意味があるため、シンボルをエスケープする必要があります。

 /\^<(.*?)>\^/

JavaScript正規表現では、修飾子が使用されていない限り、文字列の先頭を^意味します。修飾子が使用されている場合は、行の先頭を意味します。m

于 2012-07-30T20:23:50.910 に答える
0

これは機能するはずです:

\^<(.*?)>\^

正規表現では、特別な意味を持つ文字(カレ、角かっこ、パイプなど)を使用する場合は、円記号を使用してエスケープする必要があります。たとえば(\w\b)*\w\.、ドットで終わる単語のシーケンスを選択します。

気をつけろ!

正規表現パターンを文字列として渡す必要がある場合、つまりjavascriptやperlのような正規表現リテラルがない場合は、ダブルバックスラッシュを使用する必要があります。これにより、プログラミング言語は単一のバックスラッシュにエスケープされ、正規表現エンジン。
複数の言語での同じ正規表現:

Python:
  import re
  myRegex=re.compile(r"\^<(.*?)>\^") # The r before the string prevents backslash escaping
PHP:
  $result=preg_match("/\\^<(.*?)>\\^/",$subject); // Notice the double backslashes here?
JavaScript:
  var myRegex=/\^<(.*?)>\^/,
      subject="^<blah example>^";
  subject.match(myRegex);

作成しているプログラミング言語を教えていただければ、完成したコードを提供することができます。

編集:おっと、これがjavascriptとしてタグ付けされていることに気づいていませんでした。そうすれば、二重の円記号についてまったく心配する必要はありません。

編集2:単語の境界\bを表します。私はあなたのものが私が自分で使ったであろうものであることに同意しますが。

于 2012-07-30T20:24:10.513 に答える