2024-04-23 18:29:09 发布
网友
我有一个包含&&的字符串。 我想替换所有左右两边都有空间的&&。在
&&
示例字符串:
x&& &&& && && x
期望输出:
我的代码:
import re print re.sub(r'\B&&\B','and','x&& &&& && && x')
我的输出
x&& and& and and x
请建议我,如何防止&&&被and&替换。在
&&&
and&
样本输入
s = "x&& &&& && && x"
可以使用regex的lookbehind和lookhead断言
这里正则表达式(?<=\s)&&(?=\s)表示,前面和后面都是空格(\s)。在
(?<=\s)&&(?=\s)
(?<;=…)
这是一个肯定的lookbehind断言,它确保匹配的字符串前面有…
例如:(?<;=x)abc将在xabc中找到匹配项
(?=…)
这是一个lookahead断言,它确保匹配的字符串后跟…
例如:abc(?)?=xyz)只有后面跟“xyz”时才会匹配“abc”。在
您可以使用以下lookaround regex进行搜索:
(?<= )&&(?= )
并替换为and
and
代码:
RegEx Demo
您不需要正则表达式,只要split就可以了。也就是说,根据空格拆分输入字符串,然后迭代列表中的每个项,然后仅当项等于&&时,使其返回and,否则返回特定项。最后用空格连接返回的列表。在
split
>>> s = 'x&& &&& && && x' >>> l = [] >>> for i in s.split(): if i == '&&': l.append('and') else: l.append(i) >>> ' '.join(l) 'x&& &&& and and x'
或者
样本输入
可以使用regex的lookbehind和lookhead断言
^{pr2}$这里正则表达式
(?<=\s)&&(?=\s)
表示,前面和后面都是空格(\s)。在(?<;=…)
这是一个肯定的lookbehind断言,它确保匹配的字符串前面有…
例如:(?<;=x)abc将在xabc中找到匹配项
(?=…)
这是一个lookahead断言,它确保匹配的字符串后跟…
例如:abc(?)?=xyz)只有后面跟“xyz”时才会匹配“abc”。在
您可以使用以下lookaround regex进行搜索:
并替换为
and
代码:
^{pr2}$RegEx Demo
您不需要正则表达式,只要
split
就可以了。也就是说,根据空格拆分输入字符串,然后迭代列表中的每个项,然后仅当项等于&&
时,使其返回and
,否则返回特定项。最后用空格连接返回的列表。在或者
^{pr2}$相关问题 更多 >
编程相关推荐