匹配Email、通用數字和Java程式碼的正則表示式
這篇文章談了以Java為主的正則表示式用法,其中幾個案例值得收藏:
電子郵件地址
.+@.+\..++
這將捕獲大多數電子郵件地址,包括具有結尾的電子郵件地址,.co.uk但它也允許通過垃圾郵件[email protected]或[email protected]
一般數字模式
不同的程式語言允許不同種類的數字表示。有些語言允許你在數字後加上'f'或'F'來表示它應該被解釋為float(而不是“double”精度整數)或'l'或'L'來表示它應該是一個“長”(雙倍寬度)整數。其他語言允許您使用“e”或“E”來表示科學記數法,允許使用前導“+”符號等。以下正則表示式允許大多數不同型別的數字表示(不帶尾隨'f'和'L'):
[+-]?([0-9]+\.?[0-9]*|\.[0-9]+)([eE][+-]?[0-9]+)?
解析Java程式碼
以下(極其複雜的)正則表示式解析Java方法的方法簽名。它匹配任何有效的Java方法簽名(據我所知!):
(?:(?:(<b>public</b>|<b>protected</b>|<b>private</b>)\s+)|(?:(<b>abstract</b>|<b>static</b>)\s+)|(?:(<b>final</b>)\s+)|(?:(<b>volatile</b>|<b>synchronized</b>)\s+)|(?:(native|strictfp)\s+))*([a-zA-Z_][[:alnum:]]+)\s+([a-zA-Z_][[:word:]<>\[\]]+)\s*\(\s*(?:(?:([a-zA-Z_][[:word:]<>\[\]]+)\s+([a-zA-Z_][[:alnum:]]+)\s*)(?:,\s*([a-zA-Z_][[:word:]<>\[\]]+)\s+([a-zA-Z_][[:alnum:]]+)\s*)*)?\)\s*\{