【问题标题】:Remove all values in a string before a backslash删除字符串中反斜杠前的所有值
【发布时间】:2022-01-18 22:18:06
【问题描述】:

我有这个字符串

出席名单
XXXXXX
美国\亚伯拉罕
欧盟\莎拉
美国\格柏

当我尝试使用 -replace 时,它会替换插入方括号中的所有字符(包括第一行 AttendanceList)

$attendance_new = $attendance -replace "[EU\\]", "" -replace"[US\\], ""
echo $attendance_new

AttndancLit
XXXXXX
亚伯拉罕
阿拉
grbr

我希望得到这个示例输出(并可能在所有值之后连接一个字符串“_IN”)

出席名单
XXXXXX
亚伯拉罕_IN
莎拉_IN
gerber_IN

我是正则表达式的新手,仍在尝试找出特殊字符的正则表达式代码

【问题讨论】:

  • 请说明您是否只想在行首匹配EUUS,后跟\ 字符,然后删除这些值并将_IN 添加到末尾这些行。用户start thinking up 额外要求或建议不同逻辑。

标签: regex powershell text-parsing backslash ends-with


【解决方案1】:

你可以使用

$attendance_new = $attendance -replace '(?m)^(?:US|EU)\\(.*)', '$1_IN'

请参阅this demo (.NET regex demo here)。 详情

  • (?m) - 多行选项使^ 匹配任何行位置的开始
  • ^ - 行开始
  • (?:US|EU) - EUUS
  • \\ - 一个 \ 字符
  • (.*) - 第 1 组:除换行符以外的任何零个或多个字符(注意如果您开始得到奇怪的结果,您可能需要将其替换为 ([^\r\n]*)

【讨论】:

  • OP 似乎想要删除包括“\”在内的任何文本。所以你的正则表达式模式似乎过于具体。我会改用'(?m)^.+\\(.+)', '$1' 之类的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-28
  • 2021-09-14
相关资源
最近更新 更多