Mam tutaj to wyrażenie regularne;
\[sometag\](.*)\[/sometag\]
Który ma przechwytywać tekst otoczony [sometag]
tagiem. Działa dla informacji jednowierszowych zawartych w tych tagach, takich jak w ciągu [sometag]this is a bit of text[/sometag]
. Ale to nie działa na tekście, który obejmuje wiele linii, w ten sposób;
[sometag] here is more text
it spans more than one line [/sometag]
Z jakiegoś powodu wyszukiwarka wyrażeń regularnych Sublime text nie rozpoznaje tagów w wielu wierszach. Chcę wiedzieć, czy jest to problem z Sublime Text, opcją przełączaną, czy po prostu moją osobistą niekompetencją z wyrażeniami regularnymi.
regex
tags
sublimetext
Maurdekye
źródło
źródło
?
potem*
zrobi niechciany mecz. Rozważ[b]foo[/b]foo[b]bar[/b]
jako przykład.\[b\].*\[\/b\]
dopasuje całość od początku b do ostatniego zamknięcia b.?
w tym regex101.com/r/gI0xC3/2Jeśli modyfikacja trybu kropki jest z jakichś powodów niedopuszczalna, możesz przyjąć, że:
źródło
(.|\n)+?
jeśli masz dostęp do modyfikatora DOTALL. Jeśli nie możesz użyć(?s)
jakiegoś falvor, użyj[\s\S]
/[\d\D]
/[\w\W]
, ale nie sugerowanego tutaj wzoru naprzemiennego. Ten wzorzec jest wysoce nieefektywny i może łatwo doprowadzić do problemu z przekroczeniem limitu czasu.[\s\S]
, ale na pierwszy rzut oka(.|\n)
wydaje się to równoważne? Czy ma to związek z dopasowanymi grupami? Ale(?:.|\n)
czy byłoby to samo?