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