0

私はこれを機能させるように努めてきました、そして私はもうすぐそこにいますが、最後の試合をかなり得ることができます。これは、以下を使用する正規表現です。

^`.*` (.*?)(\(.*?\))?\s

これらは私が一致させようとしているパターンのいくつかの例です

 1.`asgKey` tinyblob
 2.`is_asg` bit(1) DEFAULT NULL 
 3.`lastModified` datetime DEFAULT NULL

?この正規表現は2と3に一致しますが、1には一致しません。スペース文字にとを追加しようと*しましたが、何にも一致しません。マッチンググループを誤解していると思います

(.*?)-任意の数の文字に一致します

(\(.*?\))?-角かっこがその中にあるものと一致する場合、それ以外の場合は無視します

\s-スペース文字

グループ1は文字列です。グループ2は、角かっこが存在する場合はその内容です。

4

1 に答える 1

3

一度に1つずつ一致させますよね?\sでは、#1に一致する意味は何ですか?

`asgKey` tinyblob
^  ^   ^^   ^
|  |   ||   |
` .*   `  (.*?)

何も残っていないので、\s一致することはできません。(?:\s|$)スペースやEOLに合わせたいかもしれません。

(\S+)とはいえ、スペース以外の部分にのみ一致するため、の代わりに使用することを検討して(.*?)ください。したがって、同じことを実行できますが、より高速になります。

于 2012-05-08T09:35:12.433 に答える