python - 不能通过python中的“regex”和“re”模块进行用例转换
问题描述
import regex
st = """
<!-- Start of page -->
<HTML>
<!-- Start of head -->
<HEAD>
<TITLE>My Title</TITLE> <!-- Page title -->
</HEAD>
<!-- Body -->
<BODY>
"""
pat = regex.compile(r"<!-{2,}(.*?)-{2,}>")
st2 = pat.sub(r'\U\1\E', st)
print(st2)
在上面的代码中,我正在尝试使用“regex”模块(实际上也使用“re”模块)实现大小写转换操作,我想要做的是将用 HTML 编写的注释之间的所有文本转换为大写,例如<!-- Start of page -->
TO <!-- START OF PAGE -->
,但是当我尝试这样做时,使用这个语法正确的代码,应该可以工作它给了我这个错误。
Traceback (most recent call last):
File "C:/Users/m.m/PycharmProjects/untitled9/source.py", line 13, in <module>
st2 = pat.sub(r'\U\1\E', st)
File "C:\Users\m.m\.virtualenvs\untitled5\lib\site-packages\regex\regex.py", line 676, in
_compile_replacement_helper
is_group, items = _compile_replacement(source, pattern, is_unicode)
File "C:\Users\m.m\.virtualenvs\untitled5\lib\site-packages\regex\_regex_core.py", line 1696, in
_compile_replacement
return False, [parse_repl_hex_escape(source, HEX_ESCAPES[ch], ch)]
File "C:\Users\m.m\.virtualenvs\untitled5\lib\site-packages\regex\_regex_core.py", line 1764, in
parse_repl_hex_escape
source.string, source.pos)
regex._regex_core.error: incomplete escape \U at position 3
似乎它不知道它的目的是什么\U
并且\L
给出了“不完整的转义错误”
我目前正在使用 python 3.7,我也尝试过使用“re”模块,但它不起作用。
我想知道,有什么问题?,我看过很多书用正则表达式进行大小写转换。但事实是“为什么不这样做?” 对我来说一直是个谜。
是语法的问题,还是源于正则表达式本身的python实现,不支持这种操作来转换案例?
在这个问题中,我正在尝试使用\E
etc 转换文本,或正式“在正则表达式中使用 CaseConversion”
解决方案
print(re.sub(r"<!-{2,}(.*?)-{2,}>",lambda x:"<!--"+x.group(1).upper()+"-->",st))
这是使用re
模块,sub
可以将第二个参数作为字符串或可调用对象,如果它是可调用对象,则每个匹配项都作为参数发送给可调用对象,然后您可以使用该对象进行正常操作。
这给
<!--START OF PAGE-->
<HTML>
<!--START OF HEAD-->
<HEAD>
<TITLE>My Title</TITLE> <!--PAGE TITLE-->
</HEAD>
<!--BODY-->
<BODY>
推荐阅读
- batch-file - INNO 设置 - CMD .bat 问题(PrivilegesRequired=admin,在代码部分,直接在 cmd 中工作)
- xamarin.ios - 使用 xamarin.ios c# 以编程方式添加嵌套的堆栈视图
- ios - Firebase 规则:无法始终如一地工作
- javascript - 前端动态表的最佳实践
- xcode - Swift 4 NSUnknownKeyException 错误
- c - “jmp”的操作数类型不匹配
- laravel - Laravel Slack 通知的奇怪问题
- python - 使用 pip install 时出现错误“找不到满足要求 PIL 的版本”
- vb.net - 修剪特定的字符串
- c - 不兼容的指针类型警告重新指向 int 指针数组的指针