0

こんにちはみんな、bbcodeのために私の正規表現を整理しようとしています。

私は現在URLのためにこれを持っています:

 "/\[url\=\'(.+?)\'\](.+?)\[\/url\]/is",

''にすでに含まれているURLのみを取得しますが、一重引用符で囲まれている場合とされていない場合のURLを確認するにはどうすればよいですか?

4

2 に答える 2

1

パターンの交互、垂直バー(|)を使用する構成を使用できます。

"/\[url\=(\'(.+?)\'|([^'].+?))\](.+?)\[\/url\]/is",
于 2012-11-28T01:42:43.200 に答える
1

次の正規表現を使用できます。

\[url=(?:'([^']+)'|"([^"]+)")\](.+?)\[\/url\]

一重引用符、二重引用符、および引用符で区切られていない URL 値を受け入れます。欠点は、URL 属性値を取得するために複数のキャプチャ グループをチェックする必要があることです。

キャプチャ グループは次のとおりです。

  • グループ 1: 属性が一重引用符で区切られている場合に検出される値。
  • グループ 2: 属性が二重引用符で区切られている場合に検出される値。
  • グループ 3: URL タグ間のテキスト。

URL タグの間に角括弧を使用できない場合は、代わりに次の正規表現を使用できます。この場合、より迅速に一致が検出されます。

\[url=(?:'([^']+)'|"([^"]+)")\]([^\[]+)\[\/url\]
于 2012-11-28T02:49:43.407 に答える