PowerShell 多行注释正则表达式适用于 regex101 但不适用于 pandas 或 re
PowerShell multiline comment regex works in regex101 but not in pandas or re
我在 python:
中定义了这个正则表达式
multiline_comment_regex = r'(^[ \t]*<#[^>]*#>[ \t]*[\n]*)'
和测试字符串:
characters = 'asdfasdfñáéíóú\n\r\t <#somecomment \n\r multiline\t\n\r\t asd#>\nasdf\n #comment'
在 regex101.com 中,正则表达式起到了魅力并匹配:
'\t <#somecomment \n\r multiline\t\n\r\t asd#>\n'
但是,使用 pandas
,它不匹配任何内容:
data = pd.DataFrame({'process': [characters, ]})
data['process'].replace({multiline_comment_regex: ''}, regex=True, inplace=True)
re
都没有:
re.match(multiline_comment_regex, characters)
正则表达式有什么问题?
谢谢!
这里你需要考虑两件事:
^
匹配整个字符串位置的开始,你需要使用多行标志,在这种情况下,内联(?m)
选项看起来很方便
- 这里的行结尾似乎是 CRLF,所以你不能只使用
\n
,匹配模式 start/end 处的任何空格是有意义的。
以下模式应该有效:
(?m)^(\s*<#[^>]*#>\s*)
在带有 CRLF 行结尾的环境中看到 regex test。
我在 python:
中定义了这个正则表达式multiline_comment_regex = r'(^[ \t]*<#[^>]*#>[ \t]*[\n]*)'
和测试字符串:
characters = 'asdfasdfñáéíóú\n\r\t <#somecomment \n\r multiline\t\n\r\t asd#>\nasdf\n #comment'
在 regex101.com 中,正则表达式起到了魅力并匹配:
'\t <#somecomment \n\r multiline\t\n\r\t asd#>\n'
但是,使用 pandas
,它不匹配任何内容:
data = pd.DataFrame({'process': [characters, ]})
data['process'].replace({multiline_comment_regex: ''}, regex=True, inplace=True)
re
都没有:
re.match(multiline_comment_regex, characters)
正则表达式有什么问题?
谢谢!
这里你需要考虑两件事:
^
匹配整个字符串位置的开始,你需要使用多行标志,在这种情况下,内联(?m)
选项看起来很方便- 这里的行结尾似乎是 CRLF,所以你不能只使用
\n
,匹配模式 start/end 处的任何空格是有意义的。
以下模式应该有效:
(?m)^(\s*<#[^>]*#>\s*)
在带有 CRLF 行结尾的环境中看到 regex test。