将字符串转换为小写除了所有元字符

时间:2016-07-15 19:26:43

标签: java regex string lowercase

我想将一个String(基本上是一个正则表达式本身)转换为小写但我想要从转换中排除元字符。

e.g。 :

如果我这样做

String x = "[\\s\\S]*Test Message Indicator: (.*)[\\s\\S]*";
x = x.toLowerCase();

它还会将S中的大写\\S转换为s,这将改变正则表达式的含义。

我想避免这种情况。

最终的正则表达式应该像[\\s\\S]*test message indicator: (.*)[\\s\\S]*

有什么方法可以轻松地做到这一点吗?

1 个答案:

答案 0 :(得分:1)

您可以使用占位符(您知道不会在输入String中)来交换和取出正则表达式的大写预定义字符类。例如,分别替换为class Meta1(type): pass class Meta2(type): pass class Class1(object): __metaclass__ = Meta1 # TypeError! # class Class2(Class1): # __metaclass__ = Meta2 class Class2(Class1): __metaclass__ = type('Class2Meta', (type(Class1), Meta2), {}) 00A000A1的unicode值00A2\S\D(或者您使用哪个char值)期待永远不会看到),小写字符串,然后用特殊字符替换:

\W

当然,这只考虑了几个常见的大写字符类(并且根据上下文可能效率低下) - 如果正则表达式很复杂,你需要查阅API,你需要考虑所有可能的大写正则表达式值。