1

文字列内の次の部分を見つけることができる正規表現を取得しようとしています。

[TABLE|head,border|{
#TEXT|TEXT|TEXT#
TEXT|TEXT|TEXT
TEXT|TEXT|TEXT
TEXT|TEXT|TEXT
}]

シンプルな自作の WYSIWYG エディタから、テーブルを追加できます。ただし、テーブルの「構文」は上記のように単純にする必要があります。

<table>いいえ、これらのテーブル定義は多数存在する可能性があるため、php の preg_match_all ですべてを検索して、htmlのよく知られたタグに置き換える必要があります。

使用しようとしている正規表現は次のとおりです。

/\[TABLE\|(.*)\|\{(.*)\}\]/si

私の\x0AアプリはLinuxで実行されているため、これで十分です(より単純な正規表現で正常に動作します)。

functions-online.comでオンライン正規表現テスターを使用しています。

それが取得する一致は実際には役に立ちません。上記のような複数の TABLE 定義がある場合、一致はまったく役に立ちません。(.*) があるため、「head,border」から最後の「|」まですべてをカバーします。2 番目の TABLE 定義の文字。

完全なテーブル コマンドを 1 つずつ提供する一致のリストを取得したいと考えています。

4

1 に答える 1

2

これは、コードが単一の値のみを含む入力に対して正しく機能すると仮定すると、デフォルトで .* が貪欲な一致になるためです。2 つの .* の後に疑問符を付けると、貪欲さが問題になるのを防ぐことができます。

/\[TABLE\|(.*?)\|\{(.*?)\}\]/si
于 2010-08-13T10:06:39.180 に答える