Belirli bir desenle eşleşen olmayan bir alt dizeyi bulmak için doğru sözdizimi (belirli bir dizeden önce gelen ve sonra gelen dizeler) nedir?Sed regex ve substring negation
Örneğin, BEGIN_
ile başlangıç tüm alt dizeleri, _END
ucunu ve değil eşit FOO
için aradaki substring almak; ve tüm alt dizgeyi "(iç alt dizgi)" biçiminde değiştirin. Aşağıdaki eşleşir:
BEGIN_bar_END
->(bar)
BEGIN_buz_END
->(buz)
BEGIN_ihfd8f398IHFf9f39_END
->(ihfd8f398IHFf9f39)
Ama BEGIN_FOO_END
maç olmaz.
Ben aşağıda etrafında oynamıştır ama doğru sözdizimi bulmak gibi olamaz: DFAs için olumsuzlama ile regexes derleme üstel zaman alır, çünkü
sed -e 's/BEGIN_(^FOO)_END/($1)/g'
sed -e 's/BEGIN_([^FOO])_END/($1)/g'
sed -e 's/BEGIN_(?!FOO)_END/($1)/g'
sed -e 's/BEGIN_(!FOO)_END/($1)/g'
sed -e 's/BEGIN_(FOO)!_END/($1)/g'
sed -e 's/BEGIN_!(FOO)_END/($1)/g'
, bu 'kullanılarak elde edilebilir':! Http://www.grymoire.com/Unix/Sed.html#uh-32 – Zenexer