私は、テキストファイル内のxmlのブロックを識別する正規表現を開発しました。式は、この(私は、すべてのJavaエスケープは、それが読みやすくするためにスラッシュ削除されている)のようになります。[ s S] *の違いは何ですか?と*。 Javaの正規表現では?
<\?xml\s+version="[\d\.]+"\s*\?>\s*<\s*rdf:RDF[^>]*>[\s\S]*?<\s*\/\s*rdf:RDF\s*>
その後、私はそれを最適化し、それが突然、XMLを認識停止.*?
で[\s\S]*?
を置き換えます。私の知る限りでは
、\s
はすべて空白記号を意味し、\S
は、すべての非白間隔のシンボルや[^\s]
を意味ので[\s\S]
は、論理的に、私は欲張りなフィルタを使用していませんでした.
と同等でなければならないので、何が違いかもしれません?
デフォルトでは、 '.'は行区切り文字と一致しません。'Patter.DOTALL'フラグを使うと、全ての文字(行区切り文字を含む)にマッチするかもしれません。すべての文字(行区切り文字を含む)を効果的に表現する、すべての空白と空白以外のすべての\ Sを含む '[\ s \ S]'が設定されています。 – Pshemo
トレーリング?どちらの場合にも寄与しません。 – EJP
非常に関連したもの:[*これらの違いは何ですか?](http://stackoverflow.com/a/14648811/3832970) –