以前に4桁の数字または「id」という単語のないコンマを選択しようとしていますが、これを試しました:
( ? < ! [ \ d { 5 } | id ] ) ,
問題
たとえば、入力文字列が「1999」の場合、そのカンマが選択されていないのですが、その理由がわかりません。
以前に4桁の数字または「id」という単語のないコンマを選択しようとしていますが、これを試しました:
( ? < ! [ \ d { 5 } | id ] ) ,
問題
たとえば、入力文字列が「1999」の場合、そのカンマが選択されていないのですが、その理由がわかりません。
このパターンを試してください:
(?<!\d{5}|id),
あなたのパターン(?<![\d{5}|id]),
は、数字の後にないコンマを探しています{
, }
, |
, i
, またはd
- 彼らはチャータークラスにあるべきではありません: []
. どちらかといえば、(?<![\d]{5}|id),
動作しますが、冗長です。
まず第一に、/x
フラグを使用していない限り、各スペースはスペースと一致しようとします。だからそれらを取り出してください。
第二に、[...]
おそらく代替 ( ) をグループ化するために使用していますが、角括弧は|
実際には文字クラスを示しています。つまり、これは次のとおりです。 [\d{5}|id]
[id5{}|]
(?<!\d{5}|id),
最後の問題は、正規表現の多くの実装 (使用しているものを指定していない) が可変幅の後読みアサーションをサポートしていないことです。したがって、次のようなことをする必要があるかもしれません:
(?<!\d{5}|...id),