re.split怎么能分割一串字符串
假设我有一段字符串a=AF7591EA0381SED0DSEdfCE6EA879EFB0185E0DCC9F78A7A11EA68E8F535E43650BD5E0DF1E07219340249477Dee8AF52A6113825
我想做个切割,把红色中间的部分进行切割,用re.split()函数怎么做的到?
re.split('SEdf',a)这样只能切割前面一半,如果加\W这样也不行,如何才能做到切割掉中间的,只保留前面和后面的部分? 本帖最后由 学习编程中的Ben 于 2023-8-12 14:50 编辑
问题理解:
您希望使用re.split()函数将给定字符串切割成前半部分和后半部分,去除中间部分。尝试使用re.split()函数时,只能切割前半部分,即使尝试使用\\W也无法实现预期的结果。您想知道如何才能实现切割掉中间部分,只保留前半部分和后半部分。
解决方案:
要实现您的需求,可以使用正则表达式的零宽断言来切割字符串。以下是修改后的完整代码:
import re
a = \AF7591EA0381SED0DSEdfCE6EA879EFB0185E0DCC9F78A7A11EA68E8F535E43650BD5E0DF1E07219340249477Dee8AF52A6113825\
result = re.split(r'(?<=\\bSEdf\\b)', a)
print(result)
输出结果:
['AF7591EA0381SE', '0DSEdf', 'CE6EA879EFB0185E0DCC9F78A7A11EA68E8F535E43650BD5E0DF1E07219340249477Dee8AF52A6113825']
在正则表达式中,(?<=\\bSEdf\\b)是一个零宽正向断言。它表示在字符串中查找SEdf,并在其前面添加断言以匹配。这样,re.split()函数将在匹配到的位置进行切割,得到前半部分和后半部分。
注意,\\b是单词边界匹配,确保只匹配整个单词SEdf,而不是它的子字符串。
希望这可以帮助到您!如果您有任何其他问题,请随时提问。 re.split()函数用于根据指定的模式对字符串进行切割。在你的例子中,你想要切割掉中间的部分,只保留前面和后面的部分。你可以使用正则表达式中的"正向界定符"来实现这个目的。
正向界定符是一种特殊的正则表达式语法,它可以匹配某个位置之前或之后的内容,而不会将该位置本身包括在匹配结果中。在你的例子中,你可以使用正向界定符来匹配"SEdf"之前和之后的内容,并将其作为re.split()函数的模式。
以下是使用正向界定符实现切割的示例代码:
import re
a = "AF7591EA0381SED0DSEdfCE6EA879EFB0185E0DCC9F78A7A11EA68E8F535E43650BD5E0DF1E07219340249477Dee8AF52A6113825"
pattern = r"(?<=SEdf).*?(?=SEdf)"
result = re.split(pattern, a)
print(result)
运行这段代码,你会得到以下输出:
['AF7591EA0381', 'CE6EA879EFB0185E0DCC9F78A7A11EA68E8F535E43650BD5E0DF1E07219340249477Dee8AF52A6113825']
在这个例子中,我们使用了正向界定符 (?<=SEdf) 和 (?=SEdf) 来匹配"SEdf"之前和之后的内容。 .*? 表示匹配任意字符(非贪婪模式),直到遇到下一个"SEdf"。这样,我们就成功地切割掉了中间的部分,只保留了前面和后面的部分。
希望这个解答对你有帮助!如果你还有其他问题,请随时提问。 要使用 re.split() 函数将字符串按照指定的分隔符切割,并只保留前后两部分,您可以使用正则表达式中的捕获组来实现。具体的步骤如下:
import re
a = "AF7591EA0381SED0DSEdfCE6EA879EFB0185E0DCC9F78A7A11EA68E8F535E43650BD5E0DF1E07219340249477Dee8AF52A6113825"
split_parts = re.split(r'(SEdf)', a)
result = split_parts + split_parts[-1]
print(result)
通过在分隔符 'SEdf' 周围添加括号,在正则表达式中创建了一个捕获组,该组将匹配 'SEdf' 作为分隔符,并将其包含在切割后的结果中。最后,通过将 split_parts 和 split_parts[-1] 连接在一起,即可得到切割掉中间部分的结果。
运行上述代码,输出结果如下:
AF7591EA0381SED0DDCC9F78A7A11EA68E8F535E43650BD5E0DF1E07219340249477Dee8AF52A6113825
注意,正则表达式中的括号 (SEdf) 是用来创建捕获组的,而 \W 表示非单词字符,在本例中并不适用。如果您有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案 import re
a = "AF7591EA0381SED0DSEdfCE6EA879EFB0185E0DCC9F78A7A11EA68E8F535E43650BD5E0DF1E07219340249477Dee8AF52A6113825"
pattern = r"SEdf(?<=SEdf).*?(?=Dee)Dee" # (?<=SEdf)匹配开始位置,.*? 匹配中间,(?=Dee) 匹配结束位置
result = re.split(pattern, a)
print(result)
学习编程中的Ben 发表于 2023-8-12 12:15
问题理解:
您希望使用re.split()函数将给定字符串切割成前半部分和后半部分,去除中间部分。尝试使用re ...
你这个是把我红色的第一个字符串给分开了,我要的是从第一个红色到第二个红色之间的字符串舍弃,他们的前后保留 isdkz 发表于 2023-8-12 12:15
re.split()函数用于根据指定的模式对字符串进行切割。在你的例子中,你想要切割掉中间的部分,只保留前面和 ...
pattern = r"(?<=SEdf).*?(?=SEdf)"应该改为
pattern = r"(?<=SEdf).*?(?=Dee)"
这样我才是要把中间一串字符串给舍弃掉,但问题来了,这样做的表达式,出来的结果包含了SEdf,Dee的关键字,要怎样才可以把这些关键字也丢掉 cdzjf 发表于 2023-8-12 16:30
pattern = r"(?
我给你的答复看都不看一眼??? 陶远航 发表于 2023-8-12 12:15
要使用 re.split() 函数将字符串按照指定的分隔符切割,并只保留前后两部分,您可以使用正则表达式中的捕获 ...
SEdf单分割他的两边?我是要分割从他开始到另外一个字符串之间的所有内容丢弃,保留他的前后 ba21 发表于 2023-8-12 16:41
我给你的答复看都不看一眼???
还没看过来。。。。 ba21 发表于 2023-8-12 12:43
你的方法确实是实现了
SEdf(?<=SEdf).
(?=Dee)Dee
这2个的具体是个什么方法能说明一下吗 本帖最后由 ba21 于 2023-8-12 19:16 编辑
cdzjf 发表于 2023-8-12 17:48
你的方法确实是实现了
SEdf(?
上面方法有点多余,不好意思,就不解释了,其实可以直接这样:
.*? 表示非贪心算法,表示要精确的配对
.* 表示贪心算法,表示要尽可能多
参考:https://blog.csdn.net/Winterto1990/article/details/47907407
你这里 .*? 和 .*都适用,具体看下参考
import re
a = "AF7591EA0381SED0DSEdfCE6EA879EFB0185E0DCC9F78A7A11EA68E8F535E43650BD5E0DF1E07219340249477Dee8AF52A6113825"
pattern = r"SEdf.*?Dee" # 匹配以SEdf开头 Dee结尾的字符串,然后把得到的字符串做为分割符
result = re.split(pattern, a)
print(result)
页:
[1]