提取特殊字符和词之间的所有字符的正则表达式

2024-09-27 23:28:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图提取特殊字符>和单词模式.myword之间的所有字符(通常是多个单词,包括空格)。在我的数据帧中。你知道吗

我尝试了以下方法,只在.myword中添加了一个单词:

df['my_column'] = df['text'].str.findall(r'(\w+.myword)')

一些字符串示例:

str1 = 123abc >I want this1.myword #extract I want this1.myword
str2 =  123<>I want this2.myword<> #extract I want this2.myword  

Tags: 数据方法dfmy模式extractcolumn字符
3条回答
$ grep -Po '(?<=>)[^<$]+' <<EOF
123abc >I want this1.myword
123<>I want this2.myword<>
EOF

I want this1.myword
I want this2.myword
  • (?<=)正面回顾
  • [^]负字符集

首先,一个简单的点.匹配任何字符,因此您希望在regex中转义它:\.否则,regex还会在例如:
中找到匹配项 123>Iwantthis!myword # extracts Iwantthis!myword

其次,必须允许捕获的组中有空格字符:\s。你知道吗

我想这应该适合你: r'([\w\s]+\.myword)'

我不使用regex,而是定义一个特定的函数来提取子字符串:

代码

def substring(original_string):
    start = original_string.find(">")
    end = original_string.find(".myword")

    if (start > -1) and (end > -1):
        return original_string[start + 1:end]
    else:
        return None


df['my_column'] = df['text'].apply(lambda x: substring(x))

相关问题 更多 >

    热门问题