0

コード

私はこの正規表現を持っています:

data-([a-zA-Z_]+[0-9]*)=[\"']([a-zA-Z0-9_ ]*)[\"']

電流出力

この入力がある場合:

<div data-foo="bar">

一致は次のとおりです。

  • data-foo="バー"
  • ふー
  • バー

しかし、私がこの入力を与えると:

<div data-foo="ba'r">

次に、一致は次のとおりです。

  • data-foo="ba'
  • ふー

望ましい出力

この入力がある場合:

<div data-foo="ba'r">

次に、一致することはありません:

  • data-foo="ba'r"
  • ふー
  • バー
4

3 に答える 3

1

「\」は引用符を飛躍させるためのものですか?

たぶん、両方跳べば

data-([a-zA-Z_]+[0-9]*)=[\"\']([a-zA-Z0-9_ ]*)[\"\']

コンテンツに引用符が必要な場合は、引用符の間のグループに \' または \" または \'" を使用する必要があります。これにより、他の文字を一緒に使用できます。

于 2013-04-23T12:12:06.573 に答える
1

探したい文字を追加 [a-zA-Z0-9_\"'] --> " と ' も追加したことに注意してください

于 2013-04-23T11:59:27.623 に答える
1

これは、pcre をサポートする言語 (php、ruby、java...) で実行できることに注意してください。PHP 構文の例 (後方参照あり):

$pattern = "~data-([a-zA-Z_]+\d*)=([\"'])(.*?)\2~";

しかし、このアプローチでは、必要のない見積もりを取得してしまいます。

別の方法:

 $pattern = "~data-([a-zA-Z_]+\d*)=(?|'([^']++)'|\"([^\"]++)\")~";

この(?|...|...|...)機能を使用する場合、正規表現エンジンが別のキャプチャ グループに同じ番号を与えることを許可します。したがって、寄生虫の一致なしで、必要なものを正確に取得できます。

于 2013-04-23T13:09:09.620 に答える