解析模式的文本字符串
正则表达式是根据文本匹配模式的方法 ― 类似于编译器生成类文件的工作原理。编译器在源代码中查找各种模式以便将源代码表达式转换为字节码。通过识别这些源代码模式,编译器能够只将有效的源代码表示转换为已编译的类文件。
什么是模式?
在正则表达式的上下文中,模式是字符序列的文本表示法。例如,如果您想知道一个字符序列中是否存在 car这个词,您会使用模式 car,因为这是精确地表示该字符串的方法。对于更复杂的模式,您可以使用特殊字符作为占位符。如果您不是要搜索 car,而是想搜索以字母 c开头并以字母 r结尾的任何文本字符串,您会使用 c*r模式,其中 *代表第一个 r前的任意多个字符。 c*r模式将匹配任何以 c开头并以 r结尾的字符串,如 cougar、 cavalier或 chrysler。
如何指定模式表达式
模式匹配的主要部分是关于要使用什么样的表达式。 Pattern 先保存要使用的表达式,然后将其传递给 Matcher 类以便在字符序列的上下文中检查其匹配情况。例如,如果您想验证一个电子邮件地址,您可能要检查用户输入是否与这样一个模式匹配 ― 它包含一个字母数字序列,后跟一个 @ 符号,@ 后又跟两组用句点隔开的字符。这可以用表达式 p{Alnum}+@w+.p{Alpha}{2,3} 来表示。(是的,这过于简化了电子邮件地址的结构,可能会排除某些有效的电子邮件地址,但它作为示例已经足够了。)
在讨论模式语言的具体细节之前,我们来仔细看一下 p{Alnum}+@w+.p{Alpha}{2,3} 。 p{Alnum} 序列表示单个字母数字字符(A 到 Z、a 到 z 或 0 到 9)。 p{Alnum} 后面的加号(+)被称为 量词(quantifier)。它被应用在表达式的前面部分,表示 p{Alnum} 必须出现一次或更多次。使用星号(*)表示要出现零次或一次以上(含一次)。@ 就是意味着它必须出现在至少一个字母数字字符之后,这样整个模式匹配才能成功。 w+ 与 p{Alnum}+ 类似,但添加了下划线(_)。某些序列有多个表达式。反斜杠( .)代表句点。如果前面没有反斜杠,单独一个句点代表任意字符。最后的 p{Alpha}{2, 3} 表示两个或三个字母字符。
版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!