我想将一个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]*
。
有什么方法可以轻松地做到这一点吗?
答案 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), {})
,00A0
和00A1
的unicode值00A2
,\S
,\D
(或者您使用哪个char值)期待永远不会看到),小写字符串,然后用特殊字符替换:
\W
当然,这只考虑了几个常见的大写字符类(并且根据上下文可能效率低下) - 如果正则表达式很复杂,你需要查阅API,你需要考虑所有可能的大写正则表达式值。