Apakah ada regex yang cocok dengan "semua karakter termasuk baris baru"?
Misalnya, dalam regex di bawah ini, tidak ada output dari $2
karena (.+?)
tidak termasuk baris baru saat pencocokan.
$string = "START Curabitur mollis, dolor ut rutrum consequat, arcu nisl ultrices diam, adipiscing aliquam ipsum metus id velit. Aenean vestibulum gravida felis, quis bibendum nisl euismod ut.
Nunc at orci sed quam pharetra congue. Nulla a justo vitae diam eleifend dictum. Maecenas egestas ipsum elementum dui sollicitudin tempus. Donec bibendum cursus nisi, vitae convallis ante ornare a. Curabitur libero lorem, semper sit amet cursus at, cursus id purus. Cras varius metus eu diam vulputate vel elementum mauris tempor.
Morbi tristique interdum libero, eu pulvinar elit fringilla vel. Curabitur fringilla bibendum urna, ullamcorper placerat quam fermentum id. Nunc aliquam, nunc sit amet bibendum lacinia, magna massa auctor enim, nec dictum sapien eros in arcu.
Pellentesque viverra ullamcorper lectus, a facilisis ipsum tempus et. Nulla mi enim, interdum at imperdiet eget, bibendum nec END";
$string =~ /(START)(.+?)(END)/;
print $2;
Jawaban:
Tambahkan
s
pengubah ke regex Anda.
agar sesuai dengan baris baru:sumber
"(?s)yourPattern.*"
- Juga lihat: rexegg.com/regex-modifiers.html#dotallm
bukans
. Lihat: rubular.comJika Anda tidak ingin menambahkan
/s
pengubah regex (mungkin Anda masih ingin.
mempertahankan makna aslinya di tempat lain di regex), Anda juga dapat menggunakan kelas karakter. Satu kemungkinan:karakter yang bukan spasi atau ruang. Dengan kata lain, karakter apa saja.
Anda juga dapat mengubah pengubah secara lokal di sebagian kecil dari regex, seperti:
sumber
(?s:.)
sintaks sendiri.(?:.|\n)
inferior dalam hal apa pun, kecuali kurang elegan?([\S\s]+)
adalah apa yang saya cari. Terima kasih. +1*
atau+
karena ada 2 ^ n cara yang berbeda dapat cocok dengan string panjang tertentu n.Ya, Anda hanya perlu membuat
.
baris baru yang cocok:sumber
Anda ingin menggunakan "multiline".
sumber
m
mempengaruhi^
dan$
jangkar tetapi tidak.
.