([@#]).*(?!\1)[@#] 怎么解读这个正则式?

([@#]).*我知道可以从这里分成两部分(?!\1这个位置的”\1“我也知道)[@#]这个表达式匹配的是@#或#@也就是一共两个字符第一个字符是@#中的一个第二个字符是... ([@#]).* 我知道可以从这里分成两部分(?!\1这个位置的”\1“我也知道)[@#]
这个表达式匹配的是
@#或#@
也就是一共两个字符
第一个字符是@#中的一个
第二个字符是@#中的另一个 保证两个不相同的字符各自出现一次
我的问题是
一:其中[@#].*是什么意思,没有”或|“运算符 而.*则表示是星号之前的零到多个任意字符啊这一句是如何表示出其中一个的?
二:(?!\1)[@#] 这个又是如何表示出另一个字符的?特别是其中感叹号的作用
取消第一个问题
就是第二个问题
主要是?!组合以后的作用
展开
 我来答
31016267
推荐于2017-10-02 · 超过22用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:58.4万
展开全部
\数字的意思是匹配分组里的内容。\1代表第一个分组,你可能要问什么事分组,简单的说一个()就是一个分组,也就是([@#])匹配到的内容,也就是说如果你第一个口号里匹配到了@符号,那么\1就是@(注意不能是#了)。如果你第一个([@#])匹配到了#就是\1代表#符号。

(?! 里面的字符串)的意思是不匹配“里面的字符串”才能成功。
也就是说你一个(?!\1) 不能出现一号分组的内容才成功。

例子:
#多个任意字符@ 可以匹配成功
@多个任意字符# 可以匹配成功
@多个任意字符@# 不可以匹配成功(@和@重复了)
追问
我知道\1的作用
感谢你的回答
对于后面的我都得到了有效地帮助
对于后面的?!还有一个问题
[^\1]也是不匹配啊
我却不能用在此处
是因为我的写法有问题还是根本就不可以?
如果能回答这个问题我更加感谢你
并且可以送分给你
追答
[]里好像不能那么写 [ ^@] [^#]可以。
不用加什么分啊你多客气,多给点啊!\(^o^)/

参考资料: 正则表达式指南 - AstralWind - 博客园.mht

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式