括弧でくくられてないカンマを検索する。 ただし、1行につき括弧の数は、4個までとする 検索前検索後
![]()
(a,b) (a,b),((c,d),(e,f)) (a,b),(c,d) a,b,c,(d,e) ((a,b)+(c,d))*3+(a,b)*5 ((a,b)+(c,d))*3+(a,b)*5,(a,b) a,b,c,
,(((?=([^(]*\(){4}[^(]*$)(?=([^)]*\)){4}[^)]*$))|
((?=([^(]*\(){3}[^(]*$)(?=([^)]*\)){3}[^)]*$))|
((?=([^(]*\(){2}[^(]*$)(?=([^)]*\)){2}[^)]*$))|
((?=([^(]*\(){1}[^(]*$)(?=([^)]*\)){1}[^)]*$))|
(?=[^()]*$))
肯定先読みで、
開き括弧と、閉じ括弧の数が等しければ、括弧でくくられてない
という考え方をしてます
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
ちなみに、括弧でくくられたカンマを検索する正規表現は、
_________________________
A*B + C*D + E*F + G*H + I
に、ドモルガンの法則を適用して
___ ___ ___ ___ _
(A*B) * (C*D) * (E*F) * (G*H) * I
再度、ドモルガンの法則を適用して
_ _ _ _ _ _ _ _ _
(A+B) * (C+D) * (E+F) * (G+H) * I
よって、
,(((?!([^(]*\(){4}[^(]*$)|(?!([^)]*\)){4}[^)]*$))
((?!([^(]*\(){3}[^(]*$)|(?!([^)]*\)){3}[^)]*$))
((?!([^(]*\(){2}[^(]*$)|(?!([^)]*\)){2}[^)]*$))
((?!([^(]*\(){1}[^(]*$)|(?!([^)]*\)){1}[^)]*$))
(?![^()]*$))
となります。
A*B + C*D + E*F + G*H + I = 0
に双対の原理を適用して
_ _ _ _ _ _ _ _ _
(A+B) * (C+D) * (E+F) * (G+H) + I = 1
と変形してもいいですけどね
5-3 最も内側の括弧の中身を検索
5-23 外側の括弧の中身を検索