cari

Rumah  >  Soal Jawab  >  teks badan

Masalah ungkapan biasa PHP?

Apabila saya menggunakan ungkapan biasa, saya menemui fenomena yang sangat pelik, seperti berikut:

< /p>

< /p>

< /p>

Iaitu, yang pertama tidak boleh memadankan huruf, yang kedua boleh memadankan huruf, dan yang ketiga boleh memadankan huruf dan garisan

Saya hanya mahu menggantikan watak-watak istimewa ini apabila ia muncul dalam rentetan. Saya tidak menjangkakan bahawa walaupun huruf itu akan diganti. t tahu mengapa ia sangat pelik untuk menulis dengan cara ini Tuhan Yang Maha Besar Mari kita jelaskan peraturan ini.

Sial, masih ada ini, sangat sukar untuk menulis regex biasa

Jika anda berminat, cuba padankannya dengan hello w\o\r\l\d.

Mengapa ini berlaku?

阿神阿神2794 hari yang lalu425

membalas semua(1)saya akan balas

  • 我想大声告诉你

    我想大声告诉你2017-05-16 13:09:23

    Pertama sekali, contoh pertama tidak sepatutnya menjadi undang-undang tetap, jadi tidak akan ada hasilnya.

    Ungkapan biasa dalam dua contoh seterusnya ialah sintaks [a-z] yang paling asas, yang bermaksud memadankan semua aksara daripada satu aksara kepada pengekodan aksara yang lain. [a-z] 语法,表示匹配从一个字符到另一个字符编码之间的所有字符。

    两例子中,起始字符分别是 _=, 终止字符都是全角符号 ˇ
    全角符号编码大于所有 ASCII 编码,所有在匹配 AscII 编码时都匹配,不用多考虑,我们查下起始字符的 ASCII 编码。

    ASCII 编码中:
    / < 0-9 < = < A-Z < < _ < a-z

    所以, [=-ˇ] 能匹配大写字母、反斜杠、小写字母,[_-ˇ]

    Dalam dua contoh, aksara permulaan ialah _ dan =, dan aksara yang berakhir adalah semua simbol lebar penuh ˇ.
    Pengekodan simbol lebar penuh adalah lebih besar daripada semua pengekodan ASCII, dan semuanya dipadankan apabila memadankan pengekodan AscII Tanpa berfikir panjang, kami menyemak pengekodan ASCII bagi aksara permulaan.

    Pengekodan ASCII:
    / 0-9 < kod> < _ <

    Jadi, [=-ˇ] boleh memadankan huruf besar, garis miring ke belakang dan huruf kecil, dan [_-ˇ] hanya boleh memadankan huruf kecil, kedua-duanya tidak boleh dipadankan. 🎜 🎜 🎜Kedua, adalah lebih baik untuk tidak menulis ungkapan biasa yang pelik, kerana ia sukar untuk dikekalkan. 🎜

    balas
    0
  • Batalbalas