0

考虑: "\[|\(phone\)\]"

我们正在构建一个元数据字段,并且需要标记包含术语“ phone”的文件名。不存在大小写标准,所以我可以看到混合或单一大小写(phone Phone PHONE等)的任何变化。可能有也可能没有空格来描述单词;有时有下划线——所以我不能使用单词边界。在所有情况下,单词phone都包含在方括号[]或圆括号中()

我尝试为 Powershell 脚本构建的正则表达式将查找[(后跟不区分大小写photo并以]or结尾的模式)

"\[|\(phone\)\]" <-- 这就是我在这里得到的吗?

4

2 回答 2

1

Powershell 使用 .NET 正则表达式,因此它支持. (?i)但事实证明,Powershell-match-replace,默认情况-imatch下不-ireplace区分大小写。所以正则表达式不必太复杂:

\[phone\]|\(phone\)

它将匹配文本,例如:[phone](PhONe)

请注意,正则表达式非常具体。()在这种情况下, or[]和之间不允许有空格phone

于 2013-02-05T14:46:48.163 回答
1

我会通过接受两种可能的解决方案之一来做到这一点,

\[phone\]|\(phone\)

这样,您匹配 (phone) 或 [phone],但不匹配 [phone) 和 (photo]。

但是,您必须设置一个标志以匹配不区分大小写的内容。例如,在 Javascript 中,您可以在分隔符后面添加一个 i,例如 /[phone]|(phone)/i

于 2013-02-05T14:47:48.317 回答