Python 问题匹配部分带下划线的字符串

Python 问题匹配部分带下划线的字符串,python,regex,Python,Regex,我有一个要搜索和替换的单词数据库。参见第16行id:17 我想使用python正则表达式匹配docx文档中的字符串“6(六)个月”。但是,如果字符串部分带下划线,则不会将该字符串替换为所需的“y月” 例如: main.py从docx.py调用regex dfinition for x in mycol.find(): docx_replace_regex(document, re.compile(x["original"]+'\S*', re.IGNORECASE),

我有一个要搜索和替换的单词数据库。参见第16行id:17

我想使用python正则表达式匹配docx文档中的字符串“6(六)个月”。但是,如果字符串部分带下划线,则不会将该字符串替换为所需的“y月”

例如:

main.py从docx.py调用regex dfinition

for x in mycol.find():
            docx_replace_regex(document, re.compile(x["original"]+'\S*', re.IGNORECASE), x["replace"])
docx.py

def docx_replace_regex(doc_obj,regex,replace):

我的代码适用于数据库中的每个单词,只要它没有部分下划线。

您正在匹配
\([a-z]+\)
,但显然,数据库中带下划线的字符存储为与
[a-z]
不同的字符

数据库中的文本可能存储为UTF-8,下划线可能只是“下划线字符”,您可以在应用正则表达式之前过滤掉这些字符(或者可以在正则表达式中包含下划线字符,如果支持的话)

要删除带下划线的UTF-8字符(假设在数据库中是这样做的,我们没有访问权限,您也没有提供示例):


发布代码并阅读@ZarakiKenpachi这行吗?请让我知道如何改进我的问题。我希望看到在该示例中调用repr的结果。它可能会显示下划线的编码方式。whats repr@DanD。谢谢您的回复。“你可以在应用正则表达式之前过滤掉”我该怎么做数据库的示例在屏幕上显示的图片与数据示例不同。
for p in doc_obj.paragraphs:

    if regex.search(p.text):
        # print(p.text)
        inline = p.runs
        # Loop added to work with runs (strings with same style)
        for i in range(len(inline)):
            # print(i)
            if regex.search(inline[i].text):
                # myTexts.append(inline[i].text)
                text = regex.sub(replace, inline[i].text)
                inline[i].text = text
                # print(text)
import re

line = 't͟e͟x͟t͟͟'.encode("utf-8")
underline = b'\xcd\x9f'

print(re.sub(underline, b'', line))


line = 't͟e͟x͟t͟͟'
underline = b'\xcd\x9f'.decode('utf-8')

print(re.sub(underline, '', line))