这个正则表达式会在字符串中找到括号/括号内的术语吗?

时间:2013-02-05 14:41:32

标签: regex string powershell special-characters

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

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

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

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

2 个答案:

答案 0 :(得分:1)

Powershell使用.NET正则表达式,(?i)使用-match。但结果是Powershell -replace-imatch-ireplace\[phone\]|\(phone\) 也是has support。所以正则表达式不必太复杂:

[phone]

它会匹配以下文字:(PhONe)()

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

答案 1 :(得分:1)

我是通过接受两种可能的解决方案之一来实现的,

\[phone\]|\(phone\)

这样您可以匹配(手机)或[手机],但不匹配[手机]和(照片)。

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