我有一个像 word- \ nword 这样的模式,即单词被连字符并用换行符分隔。
我希望输出为单词单词。我得到带有以下代码的单词\\ nword。
text_string = "word-\nword"
result=re.findall("[A-Za-z]+-\n[A-Za-z]+", text_string)
print(result)
我尝试过,但是没有用,我没有结果。
text_string = "word-\nword"
result=re.findall("[A-Za-z]+-(?=\n)[A-Za-z]+", text_string)
print(result)
如何实现这一目标。 谢谢!
编辑:
进行替换并运行简单的正则表达式
会有效吗?text_string = "aaa bbb ccc-\nddd eee fff"
replaced_text = text_string.replace('-\n', '-')
result = re.findall("\w+-\w+",replaced_text)
print(result)
或使用SomePerformance建议的方法
text_string = "word-\nword"
result=re.sub("(?i)(\w+)-\n(\w+)", r'\1-\2', text_string)
print(result)
答案 0 :(得分:2)
您应该使用re.sub
而不是re.findall
:
result = re.sub(r"(?<=-)\n+", "", test_str)
这会匹配-
之后的所有新行,并将其替换为空字符串。
您也可以使用
(?<=-)\n(?=\w)
仅在其前有-
且与 匹配的新行。
答案 1 :(得分:1)
如果字符串仅由该字符串组成,则纯正则表达式解决方案是使用re.sub
,捕获组中的第一个单词和第二个单词,然后将这两个组回显(不包括破折号和换行符) ):
result=re.sub("(?i)([a-z]+)-\n([a-z]+)", r'\1\2', text_string)
否则,如果字符串中还有其他内容,请遍历每个匹配项并加入组:
text_string = "wordone-\nwordtwo wordthree-\nwordfour"
result=re.findall("(?i)([a-z]+)-\n([a-z]+)", text_string)
for match in result:
print(''.join(match))
答案 2 :(得分:1)
您可以简单地用<properties>
代替出现的dependencyManagement
:
'-\n'