你可以只是一个正则表达式的一部分不区分大小写吗?

前端之家收集整理的这篇文章主要介绍了你可以只是一个正则表达式的一部分不区分大小写吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经看到了许多使整个正则表达式不区分大小写的例子。我想知道的是只有一部分表达式不区分大小写。

例如,假设我有一个这样的字符串:

fooFOOfOoFoOBARBARbarbarbAr

如果我想匹配所有出现的“foo”无论什么情况,但我只想匹配大写“BAR”如果怎么办?

理想的解决方案是工作在正规的风格,但我有兴趣听到特定的语言(谢谢Espo)

编辑

Espo提供的链接非常有帮助。有一个很好的例子,在表达式中打开和关闭修饰符。

对我的设想,我可以做这样的事情:

(?i)foo*(?-i)|BAR

这使得匹配对于仅匹配的foo部分不区分大小写。

这似乎在大多数正则表达式实现除了Javascript,Python和一些其他(正如埃斯波提到)。

我想知道的大的(Perl,PHP,.NET)都支持内联模式更改。

Perl允许你通过使用(?i :)模式修饰符使你的正则表达式的一部分不区分大小写。

现代的正则表达式风格允许您将修饰符应用于正则表达式的一部分。如果在正则表达式中间插入修饰符(?ism),修饰符只适用于修饰符右边的正则表达式部分。您可以通过在前面加上减号来关闭模式。减号后的所有模式将被关闭。例如。 (Δi-sm)导通不区分大小写,并且关闭单行模式和多行模式。

不是所有的正则表达式口味支持这一点。 JavaScript和Python将所有模式修饰符应用到整个正则表达式。它们不支持(?-ismx)语法,因为当模式修饰符应用于整个正则表达式时,关闭选项是无意义的。所有选项默认关闭

您可以快速测试正在使用的正则表达式风格如何处理模式修饰符。正则表达式(αi)te(α-i)st应该匹配测试和TEst,但不匹配teST或TEST。

Source

猜你在找的正则表达式相关文章