Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python查找并替换字符串中的标记词?_Python_Regex_String_Replace_Find - Fatal编程技术网

使用python查找并替换字符串中的标记词?

使用python查找并替换字符串中的标记词?,python,regex,string,replace,find,Python,Regex,String,Replace,Find,我需要找到并替换段落中的一些标记词 str = "my name is [tag1]alan[/tag1] . i am a [tag2]python[/tag2] developer." tag1和tag2是我需要找到的单词,并用另一个单词替换它们的中间内容。 标签不受限制。它可能有10个以上。但是每个标记都是以相同的方式括起来的,就像放在方括号中一样,[tag][/tag] 我想要这样的结果 str = "my name is alan . i am a python developer.

我需要找到并替换段落中的一些标记词

str = "my name is [tag1]alan[/tag1] . i am a [tag2]python[/tag2] developer."
tag1和tag2是我需要找到的单词,并用另一个单词替换它们的中间内容。 标签不受限制。它可能有10个以上。但是每个标记都是以相同的方式括起来的,就像放在方括号中一样,[tag][/tag]

我想要这样的结果

str = "my name is alan . i am a python developer."
有没有办法用正则表达式来做呢?不使用beautifulsoup。

使用正则表达式

Ex:

import re

string = "my name is [tag1]alan[/tag1]. i am a [tag2]python[/tag2] developer."
print(re.sub(r"(\[.*?\])", "", string))
# --> my name is alan. i am a python developer.
使用正则表达式

Ex:

import re

string = "my name is [tag1]alan[/tag1]. i am a [tag2]python[/tag2] developer."
print(re.sub(r"(\[.*?\])", "", string))
# --> my name is alan. i am a python developer.

可以使用以下正则表达式:

import re

my_str = 'my name is [tag1]alan[/tag1]. i am a [tag2]python[/tag2] developer.'

re.sub(r'\[[/]*tag\d+?\]', '', my_str )
输出:

'my name is alan . i am a python developer.'
正则表达式解释:

  • \[
    =从
    [
  • [/]*
    =下一个字符可以是
    /
    ,也可以不是
  • tag
    =必须包含字符串
    tag
  • \d+?
    =必须包含一个数字
  • \]
    =以
    ]

您可以使用以下正则表达式:

import re

my_str = 'my name is [tag1]alan[/tag1]. i am a [tag2]python[/tag2] developer.'

re.sub(r'\[[/]*tag\d+?\]', '', my_str )
输出:

'my name is alan . i am a python developer.'
正则表达式解释:

  • \[
    =从
    [
  • [/]*
    =下一个字符可以是
    /
    ,也可以不是
  • tag
    =必须包含字符串
    tag
  • \d+?
    =必须包含一个数字
  • \]
    =以
    ]

那么您想替换标签还是标签之间的文本?因为您的示例输出建议使用前者。嵌套标记应该如何处理?那么您希望替换标记还是标记之间的文本?因为您的示例输出建议使用前者。嵌套标记应该如何处理?