精华内容
下载资源
问答
  • windows正则表达式搜索
    2021-06-23 10:24:16

    网上搜索很多Windows和Linux的正则表达式,测试发现都不行,只能自己写一个
    Windows路径正则表达式:
    例:C:\Program Files\

    ^[a-zA-z]:\\([\u4E00-\u9FA5A-Za-z0-9_\s]+\\{1})+$
    

    Linux路径的正则表达式:
    例:/user/bin/

    ^\/([\u4E00-\u9FA5A-Za-z0-9_]+\/{1})+$
    

    若想后缀的 ‘/’ 或 ‘\’ 可有可无,把最后的 {1} 改成 ? 即可。

    注意:
    在使用JavaScript正则的 test 方法时,注意里面的 \ 要进行转义
    例如要测试:C:\Program Files

    /^[a-zA-z]:\\([\u4E00-\u9FA5A-Za-z0-9_\s]+\\{1})+$/.test("C:\\Program Files\\")
    

    若是直接获取表单的 string 则无需考虑 / 转义问题。

    更多相关内容
  • 字符/ 意义:对于字符,通常表示按字面意义,指出接着的字符为特殊字符,不作解释。 例如:/b/匹配字符’b’,通过在b 前面加一个反斜杠,也就是/b/,则该字符变成特殊字符,表示 匹配一个单词的分界线。...
  • 在下面输入正则表达式:在下面输入文本(可将文本粘贴到下面的输入框中),然后单击测试正则按钮,即可使用输入的正则表达式匹配文本:匹配结果将显示在下面(若无结果显示,说明匹配不成功,需要调整你的正则表达式。...

    在下面输入正则表达式:

    在下面输入文本(可将文本粘贴到下面的输入框中),然后单击测试正则按钮,即可使用输入的正则表达式匹配文本:

    匹配结果将显示在下面(若无结果显示,说明匹配不成功,需要调整你的正则表达式。):

    匹配结果说明:Success表示匹配成功的结果集;Index表示匹配结果的字符串位置,以0起始;Length表示匹配结果的长度;Value表示匹配结果的值。如匹配结果将显示在下面(匹配结果说明:Success表示匹配成功的结果集;Index表示匹配结果的字符串位置,以0起始;Length表示匹配结果的长度;Value表示匹配结果的值。如果你需要精确匹配,那么只返回一个值说明正则表达式选择正确。可以用于Java,JS,C#,Perl,PHP,JavaScript类语言的正则表达式测试,后面有正则表达式语法。

    各式各样的正则表达式参考大全(访问正则表达式实例库):

    ^\d+$  //匹配非负整数(正整数 + 0)

    //匹配整数 ^\d+(\.\d+)?$  //匹配非负浮点数(正浮点数 + 0)

    ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$  //匹配正浮点数

    ^((-\d+(\.\d+)?)|(0+(\.0+)?))$  //匹配非正浮点数(负浮点数 + 0)

    ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$  //匹配负浮点数

    ^(-?\d+)(\.\d+)?$  //匹配浮点数

    ^[A-Za-z]+$

    //匹配由26个英文字母组成的字符串

    ^[A-Z]+$     //匹配由26个英文字母的大写组成的字符串

    ^[a-z]+$  //匹配由26个英文字母的小写组成的字符串

    ^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串

    ^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串

    ^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$    //匹配email地址

    ^[a-zA-z]+://匹配(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$  //匹配url

    匹配中文字符的正则表达式: [\u4e00-\u9fa5]

    匹配双字节字符(包括汉字在内):[^\x00-\xff]

    匹配中文字符的正则表达式,有的语言支持直接使用中文字符,如.net中的: @"[找到]?[获得]?[约]? [0-9|0-9,]* 条结果",是匹配google搜索结果的正则表达式

    匹配空行的正则表达式:\n[\s| ]*\r

    匹配HTML标记的正则表达式:/.*|/

    匹配首尾空格的正则表达式:(^\s*)|(\s*$)

    匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

    匹配网址URL的正则表达式:^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$

    匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

    匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?

    匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$

    下表是元字符及其在正则表达式上下文中的行为的一个完整列表,具体到每个正则表达式符号:

    \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。

    ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的Multiline 属性,^ 也匹配 ’\n’ 或 ’\r’ 之后的位置。

    $ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的Multiline 属性,$ 也匹配 ’\n’ 或 ’\r’ 之前的位置。

    * 匹配前面的子表达式零次或多次。

    + 匹配前面的子表达式一次或多次。+ 等价于 {1,}。

    ? 匹配前面的子表达式零次或一次。? 等价于 {0,1}。

    {n} n 是一个非负整数,匹配确定的n 次。

    {n,} n 是一个非负整数,至少匹配n 次。

    {n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。在逗号和两个数之间不能有空格。

    ? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m})

    后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。

    . 匹配除 "\n" 之外的任何单个字符。要匹配包括 ’\n’ 在内的任何字符,请使用象 ’[.\n]’ 的模式。

    (pattern) 匹配pattern 并获取这一匹配。 (?:pattern) 匹配pattern

    但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。 (?=pattern) 正向预查,在任何匹配 pattern

    的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。 (?!pattern) 负向预查,与(?=pattern)作用相反

    x|y 匹配 x 或 y。

    [xyz] 字符集合。

    [^xyz] 负值字符集合。

    [a-z] 字符范围,匹配指定范围内的任意字符。

    [^a-z] 负值字符范围,匹配任何不在指定范围内的任意字符。

    \b 匹配一个单词边界,也就是指单词和空格间的位置。

    \B 匹配非单词边界。

    \cx 匹配由x指明的控制字符。

    \d 匹配一个数字字符。等价于 [0-9]。

    \D 匹配一个非数字字符。等价于 [^0-9]。

    \f 匹配一个换页符。等价于 \x0c 和 \cL。

    \n 匹配一个换行符。等价于 \x0a 和 \cJ。

    \r 匹配一个回车符。等价于 \x0d 和 \cM。

    \s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。

    \S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。

    \t 匹配一个制表符。等价于 \x09 和 \cI。

    \v 匹配一个垂直制表符。等价于 \x0b 和 \cK。

    \w 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。

    \W 匹配任何非单词字符。等价于 ’[^A-Za-z0-9_]’。

    \xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。

    \num 匹配 num,其中num是一个正整数。对所获取的匹配的引用。

    \n 标识一个八进制转义值或一个后向引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为后向引用。否则,如果 n 为八进制数字 (0-7),则 n

    为一个八进制转义值。

    \nm 标识一个八进制转义值或一个后向引用。如果 \nm 之前至少有is preceded by at least nm 个获取得子表达式,则 nm

    为后向引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7),则

    \nm 将匹配八进制转义值 nm。 \nml 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八.

    展开全文
  • 正则表达式(通常称为regex)是一... 这是一个简单的正则表达式示例–匹配内容中包含“ 正则表达式 ”,“ 正则表达式 ”,“ regex ”和“ regexp ”的所有字符串,这就是您的正则表达式模式– reg(ular expression...

    正则表达式(通常称为regex)是一种模式,由用于匹配特定字符串集的规则组成。 它们非常强大,并且您会遇到的大多数编程语言都需要它们,尤其是在需要扫描和匹配上下文以采取进一步措施时。

    这是一个简单的正则表达式示例–要匹配内容中包含“ 正则表达式 ”,“ 正则表达式 ”,“ regex ”和“ regexp ”的所有字符串,这就是您的正则表达式模式– reg(ular expression?|ex(p|es)?)

    现在,一开始它们可能看起来有些混乱或难以理解,但是一旦您理解了语法,您会发现它非常简单,并且对于将来的编码项目肯定非常有用。 学习和使用正则表达式不一定是一个痛苦的过程。

    这是有用的正则表达式工具和资源的列表,可简化您的生活。

    桌面正则表达式工具

    适用于macOS的简单明了的RegEx应用程序,用于编写和测试RegEx匹配项。

    • 平台: macOS
    • 价格:免费
    regeTools

    适用于macOS的非常全面的应用程序,用于编写和测试RegEx。 它具有针对RegEx模式和匹配项的实时语法突出显示功能。 它还支持RegEx的多种形式,包括Perl(PCRE),Ruby,bash,grep和sed。 面向初学者和高级用户的出色应用。

    • 平台: macOS
    • 价格: $ 2.99
    模式

    这个应用程式可让您使用RegEx自动执行XCode中的程式码编辑。 这样,您可以编写一个表达式来添加新行,替换还是删除它。 它与macOS Mojave或High Sierra上的XCode 10和9兼容。

    • 平台: macOS
    • 价格: $ 4.99
    正则表达式标记

    Expresso是屡获殊荣的正则表达式编辑器,适合正则表达式初学者; 它还为程序员和网页设计师提供了功能全面的开发环境。

    • 平台: Windows
    • 价格:免费
    Expresso

    开源应用程序旨在成为具有macOS漂亮外观的UI的简单功能应用程序。 它支持多种RegEx风格,包括Perl,Ruby和Java。

    • 平台: macOS
    • 价格:免费
    瑞吉

    Windows的图形应用程序,可用于交互地试验(与Perl兼容)正则表达式。

    • 平台: Windows
    • 价格:免费
    正则教练

    交互式小部件,用于试用JavaScript和其他语言(例如Sed,Ruby或Perl)的正则表达式。

    • 平台: macOS
    • 价格:免费
    正则表达式小部件

    生成符合您规范的完整正则表达式,而无需处理正则表达式语法。

    • 平台: Windows
    • 价格: $ 39.95
    正则表达式魔术

    Windows上与RegEx一起使用的功能齐全的工具。 它提供实时语法提示,搜索替换RegEx匹配项,并在RegEx中支持“ named group ”。

    • 平台: Windows
    • 价格:免费
    正则表达式小精灵

    Windows的另一个便捷工具,用于编写和测试RegEx模式。 它的工作原理非常简单。 它具有3个输入,您可以在其中添加文本源进行测试,另一个输入用于编写RegEx模式,其他输入将实时显示RegEx匹配项。

    • 平台: Windows
    • 价格:免费
    正则表达式正则表达式工具

    macOS与RegEx一起玩的应用程序。 它具有漂亮的简约UI并支持macOS暗模式。

    • 平台: macOS
    • 价格: USD7.99
    表达方式

    使您可以轻松开发和测试复杂的RegEx模式,并保存它们以备后用。 它还可以根据模式生成示例代码,以在Swift或Objective-C代码中使用。

    • 平台: macOS
    • 价格: USD1.99
    雷克斯

    在线正则表达式工具

    由gskinner创建,这是迄今为止我们所见过的最好的在线正则表达式工具之一。 它由社区驱动,提供了正则表达式语法的有用示例。 支持匹配和替换。

    正则表达式

    最流行和功能齐全的RegEx在线工具之一。 除了测试输入。

    正则表达式101

    基于Ruby的正则表达式编辑器。 在网络上测试正则表达式的便捷简便方法。

    Ruby

    该服务使用PHP正则表达式函数作为其操作的基础。 它对于其他语言的程序员也很有用。

    正则表达式测试

    基于Ajax的正则表达式评估器,用于三种不同的正则表达式系统PHP PCRE,PHP Posix和Javascript。

    雷克斯五世

    一种基于网络的python正则表达式工具,用于快速测试正则表达式。 包括对python regex特定功能的支持,例如dotall和unicode。

    Python正则表达式测试工具

    常用的RegEx表达式的集合,例如匹配usernameemailphone number表达式,并说明每个表达式的用途。 节省时间,是学习RegEx的重要资源。

    我讨厌正则表达式

    一个方便的工具,可直接从浏览器中编写RegEx模式并使用PHP函数(例如preg_matchpreg_match_allpreg_replace测试。

    PHPLiveRegEx

    使用UI方便地编写RegEx表达式。 您只需单击,选择条件,然后拖放即可重新排列语法的位置。

    构建正则表达式

    该工具可让您可视化JavaScript的RegEx模式。 一个方便的工具,如果您要编写教程,书籍或演示文稿。

    Regulex

    Visual Studio代码加载项

    一个允许您编写RegEx表达式并在并排文档中显示当前匹配项的加载项。

    VScode正则表达式

    一个加载项,它将在Visual Studio Code的自己的屏幕上启动一个工具,以开发和测试RegEx模式。 内置有PCRE ,目前支持“匹配”,“全部匹配”,“拆分”,“替换”和“全部替换”。

    正则预览

    一个附加组件,用于通过流程图在Visual Studio Code上可视化您的正则表达式模式。

    VScode正则表达式

    有关正则表达式的更多资源:

    我们可能只是在刮擦有用的正则表达式工具的表面。 如果您认为我们错过了一篇不错的正则表达式文章或工具,请在下面发表评论。 谢谢!


    翻译自: https://www.hongkiat.com/blog/regular-expression-tools-resources/

    展开全文
  • 1.正则表达式到底是什么东西? 正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)是用于描述字符串规则的工具。换句话说,正则表达式就是记录文本规则的代码。 正则表达式语言由两种...

    1.正则表达式到底是什么东西?

    正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)是用于描述字符串规则的工具。换句话说,正则表达式就是记录文本规则的代码。

    正则表达式语言由两种基本字符类型组成原义(正常)文本字符元字符(metacharacter)。元字符使正则表达式具有处理能力。所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。

    在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。很可能你使用过Windows/Dos下用于文件查找的通配符(wildcard),也就是 * 和 ? 。如果你想查找某个目录下的所有的Word文档的话,你会搜索*.doc。在这里,*会被解释成任意的字符串。和通配符类似,正则表达式也是用来进行文本匹配的工具,只不过比起通配符,它能更精确地描述你的需求——当然,代价就是更复杂——比如你可以编写一个正则表达式,用来查找所有以0开头,后面跟着2-3个数字,然后是一个连字号“-”,最后是7或8位数字的字符串(像010-12345678或0376-7654321)。

    2.常用正则表达式符号

    (1)常用的元字符
    \b 代表着单词的开头或结尾,也就是单词的分界处。虽然通常英文的单词是由空格,标点符号或者换行来分隔的,但是\b并不匹配这些单词分隔字符中的任何一个,它只匹配一个位置。
    . 匹配除了换行符以外的任意字符。
    \d 匹配一位数字(0,或1,或2,或……)。
    \s 匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等。
    \w 匹配字母或数字或下划线或汉字等。
    ^ 匹配字符串的开始。
    $ 匹配字符串的结束。有些正则表达式处理工具还有一个处理多行的选项。如果选中了这个选项,^和$的意义就变成了匹配行的开始处和结束处。

    (2)常用的限定符
    * 代表数量——指定 * 前边的内容可以连续重复使用任意次以使整个表达式得到匹配。
    .* 连在一起就意味着任意数量的不包含换行的字符。
    + 是和 * 类似的元字符,不同的是: * 匹配重复任意次(可能是0次),而+则匹配重复1次或更多次。
    ? 重复零次或一次
    {n} 重复n次
    {n,} 重复n次或更多次
    {n,m} 重复n到m次
    [] 匹配没有预定义元字符的字符集合。
    例如:
    [0-9] 代表一位数字,与\d就是完全一致的;
    [a-z0-9A-Z_] 完全等同于\w(如果只考虑英文的话)。
    [.?!] 匹配标点符号( . 或 ? 或 ! )

    (3)常用的反义代码
    \W 匹配任意不是字母,数字,下划线,汉字的字符
    \S 匹配任意不是空白符的字符
    \D 匹配任意非数字的字符
    \B 匹配不是单词开头或结束的位置
    [^x] 匹配除了x以外的任意字符
    [^aeiou] 匹配除了aeiou这几个字母以外的任意字符

    (4)常用分组语法
    捕获:
    (exp) 匹配exp,并捕获文本到自动命名的组里
    (?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name’exp)
    (?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号
    零宽断言:
    (?=exp) 匹配exp前面的位置
    (?<=exp) 匹配exp后面的位置
    (?!exp) 匹配后面跟的不是exp的位置
    (?<!exp) 匹配前面不是exp的位置
    注释:
    (?#comment) 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读

    (5)懒惰限定符
    *? 重复任意次,但尽可能少重复
    +? 重复1次或更多次,但尽可能少重复
    ?? 重复0次或1次,但尽可能少重复
    {n,m}? 重复n到m次,但尽可能少重复
    {n,}? 重复n次以上,但尽可能少重复

    3.正则表达式详细介绍

    字符转义
    如果你想查找元字符本身的话,比如查找 . ,或者 * ,是没办法直接指定它们的,因为它们会被解释成别的意思。这时你就得使用 \ 来取消这些字符的特殊意义。因此,应该使用 \. 和 \* 。当然,要查找 \ 本身,得用 \\。
    例如:china\.net 匹配 china.net,C:\\Windows匹配C:\Windows。

    分枝条件
    正则表达式里的分枝条件指的是有几种规则,如果满足其中任意一种规则都应该当成匹配,匹配分枝条件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了。具体方法是用 | 把不同的规则分隔开。

    我们来看一个复杂的表达式:\(?0\d{2}[) -]?\d{8}
    “(” 和 “)” 也是元字符,所以在这里需要使用转义。这个表达式可以匹配几种格式的电话号码,像(010)88886666,或022-22334455,或02912345678等。我们对它进行一些分析吧:首先是一个转义字符 \( ,它能出现0次或1次(?),然后是一个0,后面跟着2个数字(\d{2}),然后是 ) 或 - 或空格中的一个,它出现1次或不出现(?),最后是8个数字(\d{8})。

    不幸的是,刚才那个表达式也能匹配010)12345678或(022-87654321这样的“不正确”的格式。要解决这个问题,我们需要用到分枝条件。正则表达式里的分枝条件指的是有几种规则,如果满足其中任意一种规则都应该当成匹配,具体方法是用|把不同的规则分隔开。听不明白?没关系,看例子:
    0\d{2}-\d{8}|0\d{3}-\d{7} 这个表达式能匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本地号(0376-2233445)。

    (0\d{2})[- ]?\d{8}|0\d{2}[- ]?\d{8} 这个表达式匹配3位区号的电话号码,其中区号可以用小括号括起来,也可以不用,区号与本地号间可以用连字号或空格间隔,也可以没有间隔。你可以试试用分枝条件把这个表达式扩展成也支持4位区号的。

    \d{5}-\d{4}|\d{5} 这个表达式用于匹配美国的邮政编码。美国邮编的规则是5位数字,或者用连字号间隔的9位数字。之所以要给出这个例子是因为它能说明一个问题:使用分枝条件时,要注意各个条件的顺序。如果你把它改成\d{5}|\d{5}-\d{4}的话,那么就只会匹配5位的邮编(以及9位邮编的前5位)。原因是匹配分枝条件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了。

    分组
    我们已经提到了怎么重复单个字符(直接在字符后面加上限定符就行了);但如果想要重复多个字符又该怎么办?你可以用小括号来指定子表达式(也叫做分组),然后你就可以指定这个子表达式的重复次数了,你也可以对子表达式进行其它一些操作。例如:
    (\d{1,3}.){3}\d{1,3} 是一个简单的IP地址匹配表达式。要理解这个表达式,请按下列顺序分析它:\d{1,3}匹配1到3位的数字,(\d{1,3}.){3}匹配三位数字加上一个英文句号(这个整体也就是这个分组)重复3次,最后再加上一个一到三位的数字(\d{1,3})。
    不幸的是,它也将匹配256.300.888.999这种不可能存在的IP地址。如果能使用算术比较的话,或许能简单地解决这个问题,但是正则表达式中并不提供关于数学的任何功能,所以只能使用冗长的分组,选择,字符类来描述一个正确的IP地址:(2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?
    (PS: IP地址中每个数字都不能大于255。IP 地址里的数字可以包含有前导 0 (leading zeroes),所以01.02.03.04 这样前面带有0的数字, 是正确的IP地址。)

    反义
    有时需要查找不属于某个能简单定义的字符类的字符。比如想查找除了数字以外,其它任意字符都行的情况,这时需要用到反义。
    常用的反义正则表达式:
    \W 匹配任意不是字母,数字,下划线,汉字的字符
    \S 匹配任意不是空白符的字符
    \D 匹配任意非数字的字符
    \B 匹配不是单词开头或结束的位置
    [^x] 匹配除了x以外的任意字符
    [^aeiou] 匹配除了aeiou这几个字母以外的任意字符
    例子:\S+ 匹配不包含空白符的字符串。
    <a[^>]+> 匹配用尖括号括起来的以a开头的字符串。

    后向引用
    后向引用用于重复搜索前面某个分组匹配的文本。使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理。默认情况下,每个分组会自动拥有一个组号,规则是:从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推。例如,\1代表分组1匹配的文本。

    请看一个较为复杂的示例:
    \b(\w+)\b\s+\1\b 可以用来匹配重复的单词,像go go, 或者kitty kitty。这个表达式首先是一个单词,也就是单词开始处和结束处之间的多于一个的字母或数字(\b(\w+)\b),这个单词会被捕获到编号为1的分组中,然后是1个或几个空白符(\s+),最后是分组1中捕获的内容,也就是前面匹配的那个单词(\1)。

    你也可以自己指定子表达式的组名。要指定一个子表达式的组名,请使用这样的语法:(?<Word>\w+)(或者把尖括号换成 ’ 也行:(?‘Word’\w+)),这样就把\w+的组名指定为Word了。要反向引用这个分组捕获的内容,你可以使用\k<Word>,所以上一个例子也可以写成这样:\b(?<Word>\w+)\b\s+\k<Word>\b。

    (?:exp) 不会改变正则表达式的处理方式,只是这样的组匹配的内容不会像前两种那样被捕获到某个组里面,也不会拥有组号。你可以使用(?:exp)这样的语法来剥夺一个分组对组号分配的参与权。

    常用的捕获正则表达式 :
    (exp) 匹配exp,并捕获文本到自动命名的组里
    (?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name’exp)
    (?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号

    零宽断言
    零宽断言指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。
    它用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像\b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言),因此被称为零宽断言。

    下面给出几个例子:
    (?=exp) 也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp。比如:
    \b\w+(?=ing\b),匹配以ing结尾的单词的前面部分(除了ing以外的部分),例如查找I’m singing while you’re dancing.时,它会匹配sing和danc。
    (?<=exp) 也叫零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp。比如:
    (?<=\bre)\w+\b会匹配以re开头的单词的后半部分(除了re以外的部分),例如在查找reading a book时,它匹配ading。
    (?<=\s)\d+(?=\s) 匹配以空白符间隔的数字(再次强调,不包括这些空白符)。

    常用的零宽断言正则表达式:
    (?=exp) 匹配exp前面的位置
    (?<=exp) 匹配exp后面的位置
    (?!exp) 匹配后面跟的不是exp的位置
    (?<!exp) 匹配前面不是exp的位置

    负向零宽断言
    前面我们提到过怎么查找不是某个字符或不在某个字符类里的字符的方法(反义)。但是如果我们只是想要确保某个字符没有出现,但并不想去匹配它时怎么办?例如,如果我们想查找这样的单词–它里面出现了字母q,但是q后面跟的不是字母u,我们可以尝试这样:
    \b\w*q[^u]\w*\b 匹配包含后面不是字母u的字母q的单词。但是如果多做测试(或者你思维足够敏锐,直接就观察出来了),你会发现,如果q出现在单词的结尾的话,像Iraq,Benq,这个表达式就会出错。这是因为[^u]总要匹配一个字符,所以如果q是单词的最后一个字符的话,后面的[^u]将会匹配q后面的单词分隔符(可能是空格,或者是句号或其它的什么),后面的\w*\b将会匹配下一个单词,于是\b\w*q[^u]\w*\b就能匹配整个Iraq fighting。负向零宽断言能解决这样的问题,因为它只匹配一个位置,并不消费任何字符。

    下面给出几个例子:
    (?!exp) 零宽度负预测先行断言,断言此位置的后面不能匹配表达式exp。例如:\d{3}(?!\d) 匹配三位数字,而且这三位数字的后面不能是数字;\b((?!abc)\w)+\b 匹配不包含连续字符串abc的单词。
    (?<!exp) 零宽度负回顾后发断言,断言此位置的前面不能匹配表达式exp。例如:(?<![a-z])\d{7} 匹配前面不是小写字母的七位数字。

    一个更复杂的例子:
    (?<=<(\w+)>).*(?=<\/\1>) 匹配不包含属性的简单HTML标签内里的内容。(?<=<(\w+)>)指定了这样的前缀:被尖括号括起来的单词(比如可能是<\b>),然后是 .* (任意的字符串),最后是一个后缀(?=<\/\1>)。注意后缀里的\/,它用到了前面提过的字符转义;\1则是一个反向引用,引用的正是捕获的第一组,前面的(\w+)匹配的内容,这样如果前缀实际上是<\b>的话,后缀就是</b>了。整个表达式匹配的是< b>和</b>之间的内容(再次提醒,不包括前缀和后缀本身)。

    注释
    (?#comment) 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读
    小括号的另一种用途是通过语法(?#comment)来包含注释。例如:2[0-4]\d(?#200-249)|25[0-5](?#250-255)|[01]?\d\d?(?#0-199)。

    贪婪与懒惰
    当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。

    有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。这样 .*? 就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。现在看看懒惰版的例子吧:

    a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)和ab(第四到第五个字符)。

    常用的懒惰正则表达式:
    *? 重复任意次,但尽可能少重复
    +? 重复1次或更多次,但尽可能少重复
    ?? 重复0次或1次,但尽可能少重复
    {n,m}? 重复n到m次,但尽可能少重复
    {n,}? 重复n次以上,但尽可能少重复

    4.常用正则表达式

    匹配首尾空格的正则表达式:(^\s*)|(\s*$)
    整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$
    只能输入数字:"^[0-9]*$"。
    只能输入n位的数字:"^\d{n}$"。
    只能输入至少n位的数字:"^\d{n,}$"。
    只能输入m~n位的数字:。"^\d{m,n}$"
    只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"。
    只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"。
    只能输入有1~3位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"。
    只能输入非零的正整数:"^\+?[1-9][0-9]*$"。
    只能输入非零的负整数:"^\-[1-9][]0-9"*$。
    只能输入长度为3的字符:"^.{3}$"。
    只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"。
    只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"。
    只能输入由26个小写英文字母组成的字符串:"^[a-z]+$"。
    只能输入由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"。
    只能输入由数字、26个英文字母或者下划线组成的字符串:"^\w+$"。
    验证用户密码:"^[a-zA-Z]\w{5,17}$"正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。
    验证是否含有^%&',;=?$\"等字符:"[^%&',;=?$\x22]+"。
    只能输入汉字:"^[\u4e00-\u9fa5]{0,}$"
    验证Email地址:"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"。
    验证InternetURL:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"。
    验证电话号码:"^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"正确格式为:"XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。
    验证身份证号(15位或18位数字):"^\d{15}|\d{18}$"。
    验证一年的12个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"1"~"12"。
    验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~"31"。
    匹配中文字符的正则表达式: [\u4e00-\u9fa5]
    匹配双字节字符(包括汉字在内):[^\x00-\xff]
    应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
    String.prototype.len=function(){return this.replace(/[^\x00-\xff]/g,"aa").length;}
    匹配空行的正则表达式:\n[\s| ]*\r
    匹配html标签的正则表达式:<(.*)>(.*)<\/(.*)>|<(.*)\/>
    中文字母数字下划线:^[a-zA-Z0-9_\u4e00-\u9fa5]*$
    

    本文部分引自:https://deerchao.net/tutorials/regex/regex.htm
    推荐一款在线的正则表达式调试工具:https://regex101.com/

    展开全文
  • grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式搜索文本,并默认输出匹配行。Unix的grep家族包括grep、egrep和fgrep。Windows...
  • Mysql常用显示命令 1、显示当前数据库服务器中的数据库列表: mysql> SHOW DATABASES; ... 2、进入数据库: mysql> USE 库名; 2、显示数据库中的数据表: mysql> SHOW TABLES;...mysql> CREATE TABLE 表名 (字段名 ...
  • scala 正则表达式Regular expressions are pattern matching utilities found in most of the programming languages. They define a generic pattern to match a sequence of input characters. Regex are widely ...
  • 于是就引入了正则表达式的使用。一番搜索囫囵吞枣后,我写下了这样的函数: 复制代码 代码如下: def sanitize_filename(filename): return re.sub(‘[\/:*?<>|]’, ‘_’, filename) 最近意识到了这个函数里的...
  • Python爬虫之正则表达式

    千次阅读 2022-03-10 15:16:45
    Python正则表达式(爬虫学习内容之一
  • ue 删除空行 正则表达式
  • 正则表达式(regular expression)就是由元字符组成的⼀种字符串匹配的模式,使⽤这种模式可以实现对⽂本内容解析、校验、替换。 正则表达式的⽤途: 数据有效性验证:⽤户注册模块是应⽤正则表达式最集中的地⽅,...
  • Java正则表达式

    千次阅读 2022-02-16 20:54:47
    Java正则表达式 介绍 一个正则表达式,就是用某种模式去匹配字符串的一个公式。许多语言都提供了对正则表达式的支持。其是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成...
  • 通过 SIMILAR TO 和 REGEXP 搜索条件以及 REGEXP_SUBSTR 函数支持正则表达式。对于 SIMILAR TO,正则表达式语法符合 ANSI/ISO SQL 标准。对于 REGEXP 和 REGEXP_SUBSTR,正则表达式的语法和支持符合 Perl 5。 REGEXP...
  • JS常用的正则表达式,邮箱正则,IP正则,数字字母正则,电话正则,match和test的区别,还有正则相关小工具,都在文中一一示例。
  • 正则表达式(又称规则表达式),由元字符及其不同组合组成,是一种特殊的文本模式。构造正则表达式可用来匹配目标字符串内容,对目标对象进行检索,替换等字符串处理操作。 正则表达式,不仅存在于Python程序语言,...
  • 表达式中有特殊意义,需要添加 "\" 才能匹配该字符本身的字符汇总,特别注意:"\"字符本身在正则表示里需要用"\\\\"表示字符说明^匹配输入字符串的开始位置。要匹配 "^" 字符本身,请使用 "\^"$匹配输入字符串的...
  • 关于正则表达式的基本所有的知识和用法,内容很多,可分开阅读,建议挑选重要的学习,用的很少的功能可以理解就好。
  • 在C/C++语言中使用正则表达式本文所有的内容都来自网络,加上一些个人的理解,不保证正确性,欢迎批评指正,Email/MSN: caijimin@说起正则表达式(Regular ...关于正则表达式的介绍,有很多的文章,用搜索引擎...
  • 正则表达式 一个正则表达式是一个用于文本搜索的文本模式.换句话说,在文本中搜索 ... Java正则表达式的应用 在很多种情况下,我们都必须对字符串进行匹配,以便判断字符串的格式是否符合要求,对字符串中的内容进行...
  • Java 正则表达式

    千次阅读 2021-02-27 10:40:49
    正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。正则表达式实例一个字符串其实就是一个简单的正则表达式,例如 Hello World 正则表达式匹配 "Hello World...
  • Python正则表达式语法

    2022-06-03 22:22:02
    断言不消耗字符,即在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含断言的字符之后开始 x|y 没有包围在 ( ) 里,其范围是整个正则表达式。例如“z|food”匹配“z”或“food”,“(?:...
  • 这篇文章主要介绍了常用的正则表达式实例整理,非常不错,具有参考借鉴价值,需要的朋友可以参考下 收集在业务中经常使用的正则表达式实例,方便以后进行查找,减少工作量。 1. 校验基本日期格式 var reg1 = /^\d...
  • IP地址正则表达式匹配方法正则表达式(Regular Expression,在代码中常简写为regex、regexp或RE)是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里...
  • 如何使用正则表达式校验一个linux路径符合我们的格式要求呢?格式要求:必须'/'开头字符串只允许字母、数字、下划线正确格式如下/data//home/conf123/data/nginx_conf/错误格式如下nginx_conf//data//...
  • 正则表达式 - 元字符

    2021-09-15 10:39:19
    正则表达式 - 元字符简述元字符表三级目录 简述 正则表达式语言由两种基本字符类型组成:原义(正常)文本字符和元字符。元字符使正则表达式具有处理能力。所谓元字符就是指那些在正则表达式中具有特殊意义的专用...
  • Shell编程之正则表达式及sort、uniq、tr、cut命令先介绍几个常用命令sort命令uniq命令tr命令cut命令正则表达式概述基础正则表达式扩展正则表达式正则表达式应用1.查找电话号码2.匹配邮箱总结 先介绍几个常用命令 ...
  • 正则表达式之全部字符介绍说明【正则表达式符号说明汇总】 字符 描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换...
  • 由于我已经在本学期的三门课的实践中(java聊天室数据库部分、软件工程研究JS插件时和现在的Qt)遇到了正则表达式,所以一听说Windows编程要写技术博客,我立刻想到的是正则表达式和之前提到过的责任链(另外本想...
  • 正则表达式问号的四种用法详解原文符号因为?在正则表达式中有特殊的含义,所以如果想匹配?本身,则需要转义,\?有无量词问号可以表示重复前面内容的0次或一次,也就是要么不出现,要么出现一次。非贪婪匹配贪婪匹配...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 55,587
精华内容 22,234
关键字:

windows正则表达式搜索