Java 正規表示式中的懶惰匹配

2021-06-14 09:07:19 字數 728 閱讀 2502

最近在搞乙個手機應用,其中一部分涉及到了webservice,由於webservice這部分也是自己做,所以在取回資料的時候,需要自己解析資料。

string res="[,,,,,,,,,,,]; }";

pattern values=pattern.compile("\"receivetime\":\"(.*?)\",(.*?)\"value\":\"(\\d+)\"\\}");

matcher matchr = values.matcher(res);

while(matchr.find())

如**中所示,這些資料是從感測器中讀去然後由webservice返回,我的任務就是將每乙個感測器的時間和資料取回來。

這個是要解析的一條資料:

,

上邊的**while迴圈每一次可以匹配到這麼一條資訊,如果把正則括號裡的?去掉,那麼就會直接預設貪心匹配到整個字串的末尾,不是我們需要的。

pattern.compile("\"receivetime\":\"(.*?)\",(.*?)\"value\":\"(\\d+)\"\\}");

第乙個括號會匹配時間,第二個會匹配到"sensortype":"0 ",(注意這裡也必須用?來進行懶惰匹配,否則依然會匹配到字串末尾),然後第三個會匹配數字,這樣就拿到了我們所需要的東西了。

正規表示式 貪婪匹配與懶惰匹配

在學習之前,需要熟悉一下基本操作符的含義 表示換行外任意字元,表示重複前乙個數一次或多次。先舉個栗子 匹配乙個字串 import re res aabab r1 re.findall a.b res findall 返回列表型別 r2 re.findall a.b res print r1,r2 匹...

java正規表示式匹配

package offer 字串匹配 匹配任意乙個字元 表示前面的字元出現任意次 public class match private static boolean match string str,int strindex,string pattern,int patternindex 出口2 模...

PHP正規表示式 貪婪與懶惰匹配

過去一直感覺這個地方很不好懂,今天又大致的看了一下,拿來跟大家共享一下,呵呵!當正則表示式中包含能接受重複的限定符 指定數量的 例如 等 時,通常的行為是 在使整個表示式能得到匹配的前提下 匹配盡可能多的字元。考慮這個表示式 a.b,它將會匹配最長的以a開始,以b結束的字串。如果用它來搜尋aabab...