When using the (?i:foo) syntax, it appears that the group is not included in the 'matches' argument unless it is nested in an additional set of parenthesis, for example: ((?i:foo))
PCRE_CASELESS, PCRE_MULTILINE, PCRE_DOTALL, PCRE_UNGREEDY, PCRE_EXTRA, PCRE_EXTENDED ve PCRE_DUPNAMES seçenekleri bir şablonun içinden Perl seçenek harfleri "(?" ve ")" arasında kullanılarak değiştirilebilir. Seçenek harfleri şunlardır:
i |
PCRE_CASELESS için |
m |
PCRE_MULTILINE için |
s |
PCRE_DOTALL için |
x |
PCRE_EXTENDED için |
U |
PCRE_UNGREEDY için |
X |
PCRE_EXTRA için (PHP 7.3.0 ve sonrasında artık desteklenmiyor.) |
J |
PCRE_INFO_JCHANGED için |
Örneğin, (?im) dizilimi harf büyüklüğüne duyarsız, çok satırlı eşleşmeyi etkin kılar. Seçenekleri etkisiz hale getirmek için bu harflerin önüne bir tire imi konabilir. Örneğin, (?im-sx) dizilimi, PCRE_CASELESS ve PCRE_MULTILINE seçeneklerini etkin, PCRE_DOTALL ve PCRE_EXTENDED seçeneklerini ise etkisiz kılar. Eğer bir harf tire iminin hem öncesinde hem de sonrasında görünüyorsa onunla ilgili seçenek tanımsız olur.
Üst seviyeden bir seçenek değişikliği varsa (yani değişiklik bir alt
şablon içinde değilse), değişiklik şablonun kalanına uygulanacaktır. Bu
bakımdan, /ab(?i)c/
şablonu sadece "abc" ve "abC"
dizgeleri ile eşleşecektir.
Değişiklik bir alt şablonun içinde yapılırsa etkisi farklı olur. Bu
davranış Perl 5.005'ten itibaren geçerlidir. Bir alt şablon içindeki
seçenek değişiklikleri sadece alt şablonun kalanını etkileyecektir. Bu
bakımdan (a(?i)b)c
şablonu abc ve aBc dizgelerinden
başka bir dizgeyle eşleşmez
(PCRE_CASELESS
seçeneğinin şablon genelinde kullanılmadığı varsayılıyor). Yani, bir
şablonun farklı yerlerinde farklı seçenekler farklı ayarlarla
kullanılabilir. Olasılıklardan birinde yapılmış bir seçenek değişikliği
sonraki diğer olasılıklar için de geçerli olacaktır. Örneğin,
(a(?i)b|c)
şablonu "ab", "aB", "c" ve "C"
dizgeleriyle eşleşecektir. Bunun sebebi, seçenek ayarlarının
etkilerinin derleme sırasında gözönüne alınmasıdır. Yoksa çok tuhaf
davranışlar ortaya çıkabilirdi.
Perl uyumlu seçeneklerde olduğu gibi, PCRE'ye özgü seçenekler olan PCRE_UNGREEDY ve PCRE_EXTRA seçenekleri de sırayla U ve X karakterleri ile kullanılarak değiştirilebilir. (?X) ayarı özel bir ayar olup, bir şablonda herhangi bir ek özelliğin etkin kılınmasından önce kullanılmayı gerektirir. Yapılacak en iyi şey en başa koymaktır.
When using the (?i:foo) syntax, it appears that the group is not included in the 'matches' argument unless it is nested in an additional set of parenthesis, for example: ((?i:foo))
There is also the possibility to enable Modifier only on a specific group, so that the Modifier doesn't stay valid until end or deactivation with "(?-<modifier>)".
The Syntax for that is "?<modifier>:" on the beginning of the group, i.e. (?i:foo) matches on FoO.