PHP正则表达式((?:[0-9a-zA-Z$_.`-]|[\xC2-\xDF][\x80-\xBF])+)/is是什么意思?

兄弟在线求帮请教下,PHP正则表达式((?:[0-9a-zA-Z$_.`-]|[\xC2-\xDF][\x80-\xBF])+)/is是什么意思?
最新回答
长青诗

2024-05-17 00:36:54

(?: )表示只进行分组,不进行捕获

[0-9a-zA-Z$_.`-] ——0-9、a-z、A-Z或$、_、.、`、-中的一个字符
| ——表示或者
[\xC2-\xDF][\x80-\xBF] ——用十六进制表示的字符范围【具体是什么字符不太清楚,比如汉字的范围一般是 4E00-9FA5】
+ ——前面的字符有一个或多个
(?: +) 外面的括号( )——是捕获括号。即不捕获单个匹配字符,只捕获匹配的最大字串。
/is——是PHP中正则表达式模式修饰符,其中i代表 不区分大小写,s代表:如果设定了这个修正符,那么,被匹配的字符串将视为一行来看,包括换行符,换行符将被视为普通字符串。
模式修饰符还有:m、x、e等
追问
  1. $在什么情况下代表匹配字符串的结尾位置?

  2. python正则和PHP正则有没有区别?

  3. 为什么$_.`-这五个符号直接输出,而不是像句号代表匹配除换行符 \n 之外的任何单字符?

十分感谢~

追答
1.$在[   ]外面表示行尾;
2.php和Python正则表达式类似;
3.[ ]中的特殊字符比较少,基本就5个[、]、\、^、-,最后两个还的看所在的位置,如果^不在中括号中第一个字符,它也没有特殊意义