[英]searching for parentheses in perl
編寫一個程序,我從一個文件中讀取一個單詞/符號列表,然后在另一個文本正文中搜索每一個。
所以它是這樣的:
while(<FILE>){
$findword = $_;
for (@text){
if ($_=~ /$find/){
push(@found, $_);
}
}
}
但是,一旦括號出現,我就遇到了麻煩。 它給了我這個錯誤:
Unmatched ( in regex; marked by <-- HERE in m/( <-- HERE
我意識到這是因為Perl認為(
是正則表達式的一部分,但我如何處理這個並使(
可搜索?)
你要做/\\Q$find\\E/
而不僅僅是/$find/
- \\Q
告訴解析器停止將元字符作為正則表達式的一部分考慮,直到它找到\\E
我懷疑你會發現m/\\Q$find\\E/
有用 - 除非你想要將其他Perl正則表達式元字符解釋為元字符。
\\Q
用\\e
將在$find
變量中轉義你的特殊字符,如:
while(<FILE>){
$findword = $_;
for (@text){
if ($_=~ /\Q$find\e/){
push(@found, $_);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.