java正则表达式2

正则表达式语法
在其他语言中,\意味着:我想插入一个普通(字面)反斜杠到正则表达式,请不要给它任何特殊的含义。

在Java中,\的意思是:我想插入一个正则表达式的反斜杠,所以它后面的字符有特殊的含义。

因此,虽然在其他语言(如Perl)中,一个反斜杠\就足以转义,但在Java中,为在其他语言中转义解析正则表达式,需要两个反斜杠。在Java正则表达式中,两个\表示其他语言中的一个\,这也很容易理解,这就是为什么数字的正则表达式是\d,而普通反斜杠是\。

System.out.print(“\ \”);//输出为
System.out.print(“\ \ \ \”);//输出为\
字符

指令

将下一个字符标记为特殊字符、文本、反向引用或八进制转义字符。例如:n匹配字符n。\n匹配换行符。序列\\匹配\,\(匹配(。

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

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

零次或多次匹配前面的字符或子表达式。例如,zo*匹配“z”和“zoo”。*等价于{0,}。

一次或多次匹配前面的字符或子表达式。例如,“zo+”可以匹配“zo”和“zoo”,但不能匹配“z”。+等价于{1,}。

匹配前面的字符或子表达式0或一次。例如,“do (es)?”在do或does中匹配do。? 相当于{0,1}。

{n}

N是非负整数。它正好匹配n次。例如,“o{2}”与“Bob”中的“o”不匹配,但与“food”中的两个“o”匹配。

{n}

N是非负整数。至少n次。例如,“o{2,}”不匹配“Bob”中的“o”,但匹配“foofood”中的所有“o”。“O{1,}”相当于“O +”。“O{0,}”相当于“O *”。

{n, m}

M和n是非负整数,其中n <= M。至少匹配n次,最多匹配M次。例如,“o{1,3}”匹配“fooooood”中的前三个o。'o{0,1}'等价于’o?”。注意:不能在逗号和数字之间插入空格。

当这个字符跟在任何其他限定符(*,+,?), {n}, {n,}, {n,m}),匹配模式是“非贪婪的”。非贪婪的“模式匹配”搜索可能最短的字符串,而默认的“贪婪”模式匹配搜索可能最长的字符串。例如,在字符串“oooo”中,“o+?”只匹配一个“o”,而“o+”匹配所有“o”。

匹配除"\r\n"以外的任何单个字符。要匹配包括"\r\n"在内的任何字符,可以使用"[\s\ s]"这样的模式。

(模式)

匹配模式并捕获匹配的子表达式。你可以用$0…$9属性从结果“匹配”集合中检索捕获的匹配。要匹配括号字符(),使用"(“或”)"。

(?:模式)

匹配模式,但不捕获该匹配的子表达式,也就是说,它是一个非捕获匹配,并且不存储匹配以供以后使用。这种带有“或”字(|)的组合模型组件非常有用。例如,’ industry (?Industry: y | ies)比“| industries”的经济表达更好。

(?=模式)

执行在字符串匹配模式的起点匹配字符串的前向预期-前向搜索的子表达式。它是非捕获匹配,即不能捕获匹配以供以后使用。例如,‘Windows (?= 95 nt | | 98 | 2000),与“视窗”内的“视窗2000”相符,但与“视窗3.1”内的“视窗”不相符。预测优先级不占用字符,也就是说,在一个匹配发生后,下一个匹配的搜索在前一个匹配之后,而不是在构成预测优先级的字符之后。

(?! 模式)

执行子表达式,该子表达式反向预测先前的搜索,该搜索与不在字符串匹配模式起始点的搜索字符串相匹配。它是非捕获匹配,即不能捕获匹配以供以后使用。例如,‘Windows (?! 95 nt | | 98 | 2000)'匹配"Windows 3.1"中的"Windows",但不匹配"Windows"中的"Windows 2000"。预测优先级不占用字符,也就是说,在一个匹配发生后,下一个匹配的搜索在前一个匹配之后,而不是在构成预测优先级的字符之后。

x y |

匹配x或y。例如,‘z |食物匹配"z"或"food"。’(z | f食物匹配“zood”或“food”。

(某某)

字符集。匹配包含的任何字符。例如,“[ABC]”匹配“plain”中的“a”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript正则表达式Java正则表达式在语法上有一些差异,但是它们的基本概念和用法是相似的。下面是将JavaScript正则表达式转换为Java正则表达式的一些常见规则: 1. 语法差异: - JavaScript正则表达式使用斜杠(/)作为定界符,而Java正则表达式使用双引号(")作为定界符。 - JavaScript正则表达式中的特殊字符需要进行转义,而Java正则表达式中的特殊字符不需要转义。 2. 字符类: - JavaScript正则表达式中的字符类使用方括号([])表示,而Java正则表达式中使用方括号([])或者Unicode转义(\p{...})表示。 - JavaScript正则表达式中的字符类可以使用连字符(-)表示范围,而Java正则表达式中需要使用Unicode转义(\uXXXX)表示范围。 3. 量词: - JavaScript正则表达式中的量词使用花括号({})表示,而Java正则表达式中使用花括号({})或者问号(?)表示。 - JavaScript正则表达式中的贪婪量词默认是贪婪模式,而Java正则表达式中的贪婪量词需要在后面添加问号(?)来表示非贪婪模式。 4. 边界匹配: - JavaScript正则表达式中的边界匹配使用插入符号(^)和美元符号($)表示,而Java正则表达式中使用\A和\Z表示。 5. 其他差异: - JavaScript正则表达式中的捕获组使用圆括号(())表示,而Java正则表达式中使用圆括号(())或者方括号([])表示。 - JavaScript正则表达式中的反向引用使用反斜杠加数字(\1、\2等)表示,而Java正则表达式中使用美元符号加数字($1、$2等)表示。 以上是一些常见的JavaScript正则表达式转换为Java正则表达式的规则。具体转换时,还需要根据具体的正则表达式进行适当的调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值