• 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html
  • 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html

Java正则表达式的十大问题(上)

技术杂谈 勤劳的小蚂蚁 3个月前 (02-07) 75次浏览 已收录 0个评论 扫描二维码

本文总结了关于Java正则表达式的常见问题。

由于它们是最常用的,你可能会发现它们也非常有用。

1. 如何从字符串中提取数字?

使用正则表达式的一个常见问题是将所有数字提取到整数数组中。

在Java中,d表示数字范围(0-9)。

尽可能使用预定义的类将使你的代码更易于阅读,并消除由畸形字符类引入的错误。

有关详细信息,请参阅预定义的字符类。

请注意d中的第一个反斜杠。

如果在字符串文字中使用转义结构,则必须在反斜杠前面加上另一个反斜杠,以便编译字符串。

这就是为什么我们需要用\d。



2. 如何用换行符拆分Java字符串?

根据所使用的操作系统,至少有三种不同的方式可以输入新行字符。


因此,按新行分割字符串最直接的方法是:


但是如果你不想要空行,你可以使用,这也是我最喜欢的方法:


下面是一种更高级的方法,它实际上是独立于系统的。但是请记住,如果两个换行符并排放置,仍然会得到空行。


3.pattern.compile()的重要性

指定为字符串的正则表达式必须首先编译为Pattern类的实例。

编译()方法是创建对象实例的唯一方法。

典型的调用序列是这样的:


本质上,Pattern.compile()用于将正则表达式转换为有限状态机(参见编译器:原理、技术和工具(第二版))。

但是执行匹配所涉及的所有状态都驻留在匹配器中。

通过这种方式,可以重用模式p。

许多牌手可以共享相同的模式。


pattern.matches()方法被定义为当正则表达式只使用一次时的便利方法。此方法仍然使用compile()隐式获取模式的实例,并与字符串匹配。


与上面的第一个代码相同,但是对于重复匹配,它的效率较低,因为它不允许重用已编译的模式。

4. 如何转义文本为正则表达式?

通常,正则表达式使用“”来转义结构,但是在反斜杠前面加上另一个要编译的Java字符串是很痛苦的。

用户还可以通过另一种方式将字符串文本传递给模式,比如“$5”。不用写\$5或[$]5,我们可以打字。


5. 为什么String.split()需要转义管道分隔符?

split()在给定正则表达式的匹配项周围拆分字符串。

Java表达式支持影响模式匹配方式的特殊字符,这称为元字符。

|是一个元字符,用于从多个可能的正则表达式中匹配单个正则表达式。

例如,|b的意思是A或B。有关详细信息,请参阅与竖条或管道符号的交替。

因此,要使用|作为文字,你需要通过在它前面添加\|来转义它。


丨极客文库, 版权所有丨如未注明 , 均为原创丨
本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
转载请注明原文链接:Java正则表达式的十大问题(上)
喜欢 (0)
[247507792@qq.com]
分享 (0)
勤劳的小蚂蚁
关于作者:
温馨提示:本文来源于网络,转载文章皆标明了出处,如果您发现侵权文章,请及时向站长反馈删除。

您必须 登录 才能发表评论!

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00