2

私は正規表現に精通していますが、この複雑な例は私をつまずかせています。このコード行が何をしているのかを理解しようとしています。

r'/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/([gim]+\b|\B)'

これは、正規表現を検出しようとしているコードスニペットです。例:/\s+/[ネストされた、、、\[および対応するものまで理解してい(ます。

(このコードをPythonからJavaに移植する必要があり、上記がどのように機能するのか、なぜJavaのように機能しないのかを理解するのに問題があります。)

4

1 に答える 1

5

これが役立つかもしれない分解されたバージョンです:

/                      # Match an opening slash
(                      # Followed by one or more...
  \\.                  #    Backslash followed by any character
  |                    #   or...
  [^[/\\\n]            #    Something that's not a [, /, \, or newline
  |                    #   or...
  \[                   #    A literal [, followed by any number of...
    (
      \\.              #     backslashes followed by any character
      |                #     or...
      [^\]\\\n]        #     something that's not a ], \, or newline
    )*
  ]                    #    and ending with a ]
)+
/                      # And a closing slash
(
  [gim]+\b             # Followed by one or more of g, i, m
  |
  \B                   # or something that isn't a word boundary
)
于 2012-05-08T03:02:46.873 に答える