正则匹配两个方括号之间的内容,包括方括号本身
比如我要匹配下面字符[baidu].....[/baidu]的所有内容(包括两个方括号),正则应该怎么写?按这样写对不对?/\[baidu\]([\s\S]*)\[\/b...
比如我要匹配下面字符
[baidu] ..... [/baidu]
的所有内容(包括两个方括号),正则应该怎么写?
按这样写对不对?
/\[baidu\]([\s\S]*)\[\/baidu\]/Ui 展开
[baidu] ..... [/baidu]
的所有内容(包括两个方括号),正则应该怎么写?
按这样写对不对?
/\[baidu\]([\s\S]*)\[\/baidu\]/Ui 展开
2个回答
展开全部
正则表达式的() [] {}属于特殊字符,有不同的意思。
() 是为了提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串。
(\s*)表示连续空格的字符串。
[]是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字。[\s*]表示空格或者*号。
{}一般用来表示匹配的长度,比如 \s{3} 表示匹配三个空格,\s[1,3]表示匹配一到三个空格。
(0-9) 匹配 '0-9′ 本身。 [0-9]* 匹配数字(注意后面有 *,可以为空)[0-9]+ 匹配数字(注意后面有 +,不可以为空){1-9} 写法错误。
[0-9]{0,9} 表示长度为 0 到 9 的数字字符串。
如果匹配的字符本身包含括号,那么需要用反斜杠进行转义,例如:
匹配 [abcd]
正则表达式 \[.*\]
() 是为了提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串。
(\s*)表示连续空格的字符串。
[]是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字。[\s*]表示空格或者*号。
{}一般用来表示匹配的长度,比如 \s{3} 表示匹配三个空格,\s[1,3]表示匹配一到三个空格。
(0-9) 匹配 '0-9′ 本身。 [0-9]* 匹配数字(注意后面有 *,可以为空)[0-9]+ 匹配数字(注意后面有 +,不可以为空){1-9} 写法错误。
[0-9]{0,9} 表示长度为 0 到 9 的数字字符串。
如果匹配的字符本身包含括号,那么需要用反斜杠进行转义,例如:
匹配 [abcd]
正则表达式 \[.*\]
展开全部
要匹配字符串[baidu] ..... [/baidu]的所有内容(包括两个方括号),
应该用正则表达式:/\[baidu\][\s\S]*?\[\/baidu\]/i
取第0捕获组的数据,就是字符串[baidu] ..... [/baidu]的所有内容
你的正则表达式/\[baidu\]([\s\S]*)\[\/baidu\]/Ui如果有两个[/baidu],它就会匹配最长的字符串(贪婪匹配),比如字符串:[baidu] ..... [/baidu][baidu] ..... [/baidu]
它一次会匹配全部字符串(贪婪匹配),而不是匹配第一和第二个[baidu] ..... [/baidu](非贪婪匹配)
另外,/\[baidu\]([\s\S]*)\[\/baidu\]/Ui加小括号会捕获[baidu] ..... [/baidu]中间的 .....
而你要匹配所有内容(包括两个方括号),所以应该去掉小括号,取第0捕获组的数据。
应该用正则表达式:/\[baidu\][\s\S]*?\[\/baidu\]/i
取第0捕获组的数据,就是字符串[baidu] ..... [/baidu]的所有内容
你的正则表达式/\[baidu\]([\s\S]*)\[\/baidu\]/Ui如果有两个[/baidu],它就会匹配最长的字符串(贪婪匹配),比如字符串:[baidu] ..... [/baidu][baidu] ..... [/baidu]
它一次会匹配全部字符串(贪婪匹配),而不是匹配第一和第二个[baidu] ..... [/baidu](非贪婪匹配)
另外,/\[baidu\]([\s\S]*)\[\/baidu\]/Ui加小括号会捕获[baidu] ..... [/baidu]中间的 .....
而你要匹配所有内容(包括两个方括号),所以应该去掉小括号,取第0捕获组的数据。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询