regex 如何删除字符串中除特定标记外的所有与符号[关闭]

mpgws1up  于 2023-04-07  发布在  其他
关注(0)|答案(2)|浏览(100)

已关闭,此问题需要更focused,目前不接受回答。
**要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。

昨天关门了。
Improve this question
我需要删除字符串中的每个&符号,除了'd&g'或'black& jones'这样的标记。为此,必须使用正则表达式来完成。我使用了这个模式r'[a-zA-Z]&[a-zA-Z]',但不起作用。任何帮助或指导都将不胜感激。

mu0hgdu0

mu0hgdu01#

这里是答案假设你想取代任何&符号除了那些被英语字母包围。

import re

test_str = "d&g &this &mostafa & and h&m and& mostafa&mostafa &this this& d&g"

print(re.sub(r"&(?![a-zA-Z])|(?<![a-zA-Z])&", "", test_str))
# d&g this mostafa  and h&m and mostafa&mostafa this this d&g

在这里,&(?![a-zA-Z])|(?<![a-zA-Z])&匹配前面没有英语字母或后面没有英文字母的“&”符号:(?!...)-负向前看,(?<!...)-负向后看。
如果你想扩展符号列表允许在和号周围-在两个符号类中添加这些符号。例如,如果你想允许数字周围使用[a-zA-Z0-9]

9cbw7uwe

9cbw7uwe2#

找到了合适的正则表达式模式。下面是完整的python代码:

import re

text = "d&g &this &mostafa & and h&m and& mostafa&mostafa &this this& d&g"

pattern = r"^&|&$|[^a-z]+&|&[^a-z]+"

cleaned_text = re.sub(pattern, " ", text)

print(cleaned_text)

相关问题