Regex pyspark正则表达式匹配域\用户名模式

Regex pyspark正则表达式匹配域\用户名模式,regex,pyspark,Regex,Pyspark,我有一个数组中带有domain\username的字符串。我想匹配它并替换它 该字符串具有以下模式: [, DESKTOP-XXQYY56\Adminaccount, ] [, MB4345XX\adminaccount, ] 我使用的代码如下: df2= df1.withColumn( 'str1', regexp_replace( 'str', r'^([A-Za-z0-9]+(-[A-Za-z0-9]+)*)+(\\?([A-Za-z0-

我有一个数组中带有domain\username的字符串。我想匹配它并替换它

该字符串具有以下模式:

[, DESKTOP-XXQYY56\Adminaccount, ] [, MB4345XX\adminaccount, ]
我使用的代码如下:

df2= df1.withColumn(
    'str1',
     regexp_replace(
        'str',
        r'^([A-Za-z0-9]+(-[A-Za-z0-9]+)*)+(\\?([A-Za-z0-9])+)*',
        'AB22'
    )
)

我无法正确匹配图案。我想匹配字符串并替换它。请建议。

如果您想匹配该格式并将
域\用户
替换为XXXX,您可以使用两个捕获组来开始
[,
和结束
,]

您可以省略锚点
^
,在这部分
([A-Za-z0-9])+
中,将量词
+
移动到字符类
[A-Za-z0-9]+
,否则您将重复匹配单个字符的组

如果不单独使用捕获组进行进一步处理,可以将它们转换为非捕获组
(?:

模式可能看起来像

(\[, )[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*(?:\\?[A-Za-z0-9]+)*(, \])
部分地

  • (\[,)
    捕获组1匹配
    [,
  • [A-Za-z0-9]+
    匹配字符类中列出的任意字符的1+倍
  • (?:
    非捕获组
    • -[A-Za-z0-9]+
      匹配
      -
      并匹配1+次所列的任何
  • )*
    关闭非捕获组并重复0多次
  • (?:
    非捕获组
    • \\?[A-Za-z0-9]+
      匹配可选的
      \
      和所列任意值的1+倍
  • )*
    关闭非捕获组并重复1+次
  • (,\])
    Capturegroup 2match
    ,]
在替换中,使用2个捕获组

$1XXXX$2

如果您想匹配该格式并将
域\用户
替换为XXXX,您可以使用两个捕获组来开始
[,
和结束
,]

您可以省略锚点
^
,在这部分
([A-Za-z0-9])+
中,将量词
+
移动到字符类
[A-Za-z0-9]+
,否则您将重复匹配单个字符的组

如果不单独使用捕获组进行进一步处理,可以将它们转换为非捕获组
(?:

模式可能看起来像

(\[, )[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*(?:\\?[A-Za-z0-9]+)*(, \])
部分地

  • (\[,)
    捕获组1匹配
    [,
  • [A-Za-z0-9]+
    匹配字符类中列出的任意字符的1+倍
  • (?:
    非捕获组
    • -[A-Za-z0-9]+
      匹配
      -
      并匹配1+次所列的任何
  • )*
    关闭非捕获组并重复0多次
  • (?:
    非捕获组
    • \\?[A-Za-z0-9]+
      匹配可选的
      \
      和所列任意值的1+倍
  • )*
    关闭非捕获组并重复1+次
  • (,\])
    Capturegroup 2match
    ,]
在替换中,使用2个捕获组

$1XXXX$2

您到底想匹配和替换什么?上面的示例是包含方括号的示例字符串?请尝试省略锚定
^
我有域\用户格式的数据,例如[,DESKTOP-XXQYY56\Adminaccount,][,MB4345XX\Adminaccount,]。我想找到此数据并将其替换为“XXXX”您到底想匹配和替换什么?上面的示例是包含方括号的示例字符串?请尝试省略锚定
^
我有域\用户格式的数据,例如[,DESKTOP-xxqyyy56\admincount,][,MB4345XX\admincount,]。我想找到此数据并将其替换为“XXXX”