iT邦幫忙

0

正規式 連續字元

HI 大家好
我想問問有沒有正規表達式可以檢查 例如:123,321,abc,cba這樣的順序

我網路上找了很久沒有找到範例
這個網站有找到類似的解法,不過這是不是表示大寫和相反的順序要自己寫?
(abc|bcd|cde|def|efg|fgh|ghi|hij|ijk|jkl|klm|lmn|mno|nop|opq|pqr|qrs|rst|stu|tuv|uvw|vwx|wxy|xyz|012|123|234|345|456|567|678|789)+

https://stackoverflow.com/questions/8880088/regular-expression-to-match-3-or-more-consecutive-sequential-characters-and-cons

文章直接說 case 1 not possible QQ

1 個回答

1
浩瀚星空
iT邦大師 1 級 ‧ 2020-01-17 10:55:16

正規表達式其實無法做到你說的一個條列就可以判斷組合。
畢竟,你無法下規則中的規則這樣的條件。正規表達式也無法程式化智能式的生成對應條件。

一般的做法是用程式處理正規表達式的條件,如你說的

(abc|bcd|cde|def|efg|fgh|ghi|hij|ijk|jkl|klm|lmn|mno|nop|opq|pqr|qrs|rst|stu|tuv|uvw|vwx|wxy|xyz|012|123|234|345|456|567|678|789)+

其實可以交給程式組合完後。將其視為規則再比對字串。
不過如果這樣子的話,有時直接給程式判斷處理可能還會比較快。(看情況就是了)

講白一點,你只能利用程式處理。很難做出一個這樣條件的正規化。

看更多先前的回應...收起先前的回應...
a405066 iT邦新手 5 級 ‧ 2020-01-17 10:59:06 檢舉

瞭解了 謝謝!!

a405066 iT邦新手 5 級 ‧ 2020-01-17 12:02:31 檢舉

浩瀚星空 你好
想問問 我要判斷A字串在B字串裡面字元出現次數大於4表示match
例如 :
input 1o2a34gie
pattern [aeiou]{4,}
應該要檢查出oaie然後回傳true,但卻回覆false

input 114oaie23g
pattern [aeiou]{4,}
卻能檢查出來然後回傳true

是因為集合[]裡的字串必須要連續出現在input裡面嗎?
那想問問有什麼方法可以做到我要的ˊˋ
試過一些寫法都不行orz

是的,因為你的規則就是「符合aeion這些字母,至少要4個連續。」
所以說你第一個給你false是正確的。畢竟「1o2a34gie」並不符合連字串。

不過山不轉路轉。你可以先用正則取代的方式將不符合的「aeion」字元先給空白化後。再去做長度的正則判斷。也就是下兩段式正則來處理。

a405066 iT邦新手 5 級 ‧ 2020-01-17 14:58:21 檢舉

知道了! 謝謝你!

 

我要發表回答

立即登入回答