linux 中 ^[^abc] 正则表达式啥意思
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 中 ^[^abc] 正则表达式啥意思相关的知识,希望对你有一定的参考价值。
^代表行首,$代表行尾1、^[a-z]匹配以小写字母开头的字符串
2、[^a-z] 不包含小写字母的字符匹配
3、^[^a-z] 开头不包含小写字母的字符匹配 参考技术A 匹配行首是非abc的任意字符串。 参考技术B
^代表行首,$代表行尾:
1、^[a-z]匹配以小写字母开头的字符串。
2、[^a-z]不包含小写字母的字符匹配。
3、^[^a-z]开头不包含小写字母的字符匹配。
正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
正则表达式的特点是:
1.灵活性、逻辑性和功能性非常强;
2.可以迅速地用极简单的方式达到字符串的复杂控制。
3.对于刚接触的人来说,比较晦涩难懂。
由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到MicrosoftWord、VisualStudio等大型编辑器,都可以使用正则表达式来处理文本内容。
正则表达式中的 ^ 和 $ 是啥意思?
【中文标题】正则表达式中的 ^ 和 $ 是啥意思?【英文标题】:What do ^ and $ mean in a regular expression?正则表达式中的 ^ 和 $ 是什么意思? 【发布时间】:2011-10-18 00:48:25 【问题描述】:"\\w+@\\w+[.]\\w+"
和 "^\\w+@\\w+[.]\\w+$"
有什么区别?我试过用谷歌搜索它,但没有运气。
【问题讨论】:
【参考方案1】:^
表示“匹配字符串的开头”(更准确地说,是字符串中第一个字符之前的位置,因此它与实际字符不匹配)。
$
表示“匹配字符串的结尾”(字符串中最后一个字符之后的位置)。
两者都称为anchors,并确保匹配整个字符串而不仅仅是子字符串。
因此,在您的示例中,第一个正则表达式将在 email@address.com.uk
上报告匹配,但匹配的文本将是 email@address.com
,可能不是您所期望的。第二个正则表达式将失败。
小心,因为一些正则表达式实现隐式地将正则表达式锚定在字符串的开头/结尾(例如 Java 的 .matches()
,如果您正在使用它)。
如果设置了多行选项(例如,使用(?m)
标志,或者通过执行Pattern.compile("^\\w+@\\w+[.]\\w+$", Pattern.MULTILINE)
),那么^
和$
也会匹配行的开头和结尾。
【讨论】:
所以如果我理解正确,那么字符串“email@address.com.uk”与“\\w+@\\w+[.]\\w+”完美匹配,但不是“^\\ w+@\\w+[.]\\w+$"?但我已经在 java 中进行了测试,并且字符串在这两种情况下都失败了。我仍然没有看到明显的区别。你能根据我的情况显示分数吗? 您的正则表达式只允许在 @ 符号后添加一个点。试试^[\\w.]+@[\\w.]+\\.\\w+$
。它仍然不完美(没有任何正则表达式可以匹配电子邮件地址),但它更宽容一些。
是的,根据您的回答,字符串“email@address.com.uk”将匹配“\\w+@\\w+[.]\\w+”,但不匹配“ ^\\w+@\\w+[.]\\w+$"。此代码: String s = "email@address.com.uk"; System.out.println(s.matches("\\w+@\\w+[.]\\w+")); => 错误
您是否仔细阅读了我的回答? Java 的 .matches()
为您的正则表达式隐式添加锚点!【参考方案2】:
试试 Javadoc:
http://download.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html
^
和 $
匹配一行的开头/结尾(不消耗它们)
【讨论】:
以上是关于linux 中 ^[^abc] 正则表达式啥意思的主要内容,如果未能解决你的问题,请参考以下文章