⑴ 正則 匹配大括弧內的逗號
這個確實比較困難啊。
主要難度在你的大括弧的嵌套。
如果你的大括弧的嵌套是成對出現的,我倒是有個思路,如果可行,你倒是可以試一下:
1、正則語句:\{[^\{\}]+\}
這句話可以取到最內層的「{...}」,如果沒有嵌套就直接取出來了,
比如:廣州{南海,順德,三水},佛山{南海,順德,三水,{shanghai,{aaaaa,aaaaa}}},
取出了:{南海,順德,三水}和{aaaaa,aaaaa}
這是可以對取出的這2個替換逗號,然後將大括弧替代成其他字元,比如「#」和「$」,然後再次使用正則匹配,這個就是遞歸了。
2、與上面的類似,不是反其道
正則語句:\}[^\{\}]+{
這句話可以找到「}」「{」之間的不包含「{」「}」的全部數據,也就是說一次性找出大括弧外的數據,這種方法不能找出第一個{之前的數據和最後一個}之後的數據,這個很撿到,檢索一次就好。將這些數據的逗號替換成其他字元,如「#」,然後將其他的逗號替換成你想要的字元,最後將「#」替換回逗號,結束。
個人感覺兩種方法都可行,第二種方法比較簡單,不需要遞歸,僅供參考。
⑵ 在java中要屏蔽中文逗號,正則表達式怎麼寫
英文標點符號比較多,如,(逗號)、。(點號)、?(問號)、:(冒號)、;(分號)、『』(單引號)、!(感嘆號)、「」(雙引號)、—(連接號)、——(破折號)、……(省略號)、()(小括弧)、【】(中括弧)、{}(大括弧)、(頓號)、《》書名號等。以下正則表達式能夠驗證英文標點符號。
[,。?:;『』!「」—……、]|(-{2})|(())|(【】)|({})|(《》) (64)
正則表達式(64)解釋:
[,。?:;『』!「」—……、]匹配,、。、?、:、;、『、』、!、「、」、—、……符號。
-{2}匹配破折號。
()匹配省略號小括弧。
【】匹配中括弧。
{}匹配大括弧。
《》匹配書名號。
⑶ JAVA正則表達式獲取特定的字元串
^ 和 $ 他們是分別用來匹配字元串的開始和結束,以下分別舉例說明:
"^The": 開頭一定要有"The"字元串;
"of despair$": 結尾一定要有"of despair" 的字元串;
那麼,
"^abc$": 就是要求以abc開頭和以abc結尾的字元串,實際上是只有abc匹配。
"notice": 匹配包含notice的字元串。
你可以看見如果你沒有用我們提到的兩個字元(最後一個例子),就是說 模式(正則表達式) 可以出現在被檢驗字元串的任何地方,你沒有把他鎖定到兩邊。
接著,說說 '*', '+',和 '?',
他們用來表示一個字元可以出現的次數或者順序. 他們分別表示:
"zero or more"相當於{0,},
"one or more"相當於{1,},
"zero or one."相當於{0,1}, 這里是一些例子:
"ab*": 和ab{0,}同義,匹配以a開頭,後面可以接0個或者N個b組成的字元串("a", "ab", "abbb", 等);
"ab+": 和ab{1,}同義,同上條一樣,但最少要有一個b存在 ("ab", "abbb", 等.);
"ab?":和ab{0,1}同義,可以沒有或者只有一個b;
"a?b+$": 匹配以一個或者0個a再加上一個以上的b結尾的字元串.
要點, '*', '+',和 '?'只管它前面那個字元.
你也可以在大括弧裡面限制字元出現的個數,比如
"ab{2}": 要求a後面一定要跟兩個b(一個也不能少)("abb");
"ab{2,}": 要求a後面一定要有兩個或者兩個以上b(如"abb", "abbbb", 等.);
"ab{3,5}": 要求a後面可以有2-5個b("abbb", "abbbb", or "abbbbb").
現在我們把一定幾個字元放到小括弧里,比如:
"a(bc)*": 匹配 a 後面跟0個或者一個"bc";
"a(bc){1,5}": 一個到5個 "bc."
還有一個字元 '│', 相當於OR 操作:
"hi│hello": 匹配含有"hi" 或者 "hello" 的 字元串;
"(b│cd)ef": 匹配含有 "bef" 或者 "cdef"的字元串;
"(a│b)*c": 匹配含有這樣多個(包括0個)a或b,後面跟一個c的字元串;
一個點('.')可以代表所有的單一字元,不包括"\n"
如果,要匹配包括"\n"在內的所有單個字元,怎麼辦?
對了,用'[\n.]'這種模式.
"a.[0-9]": 一個a加一個字元再加一個0到9的數字
"^.{3}$": 三個任意字元結尾 .
中括弧括住的內容只匹配一個單一的字元
"[ab]": 匹配單個的 a 或者 b ( 和 "a│b" 一樣);
"[a-d]": 匹配'a' 到'd'的單個字元 (和"a│b│c│d" 還有 "[abcd]"效果一樣); 一般我們都用[a-zA-Z]來指定字元為一個大小寫英文
"^[a-zA-Z]": 匹配以大小寫字母開頭的字元串
"[0-9]%": 匹配含有 形如 x% 的字元串
",[a-zA-Z0-9]$": 匹配以逗號再加一個數字或字母結尾的字元串
你也可以把你不想要得字元列在中括弧里,你只需要在總括弧裡面使用'^' 作為開頭 "%[^a-zA-Z]%" 匹配含有兩個百分號裡面有一個非字母的字元串.
要點:^用在中括弧開頭的時候,就表示排除括弧里的字元。為了PHP能夠解釋,你必須在這些字元面前後加'',並且將一些字元轉義.
⑷ java 正則表達式 (.+)怎樣理解舉個例子詳細說明。
正則表達式的符號理解嗎,* ? +
其中*代表的是0-無窮個個,比如/^w*$/,代表有0個或多個數字或字母
?代表是0-1個,比如/^d*$/,代表最多隻有一個數字,也可能沒有
+代表有1-無窮個,比如/^d+$/,代表最少有一個數字
.代表的是換行符之外的任意字元,它代表的字元,不是個數,前面三個代表的個數。
其實如果要代表個數可以用大括弧就可以了,也不用記這些符號,例如d{3,5},代表有3-5個數字。