如果我们提供-day every
every -day time
它不应该在Perl中转换,如何为-
OR NOT
转换every-day
-day every
制作正则表达式。
例如:如果我们提供NOT day every
,则应将其转换为every-day
。
但是我们给s/(?<!\w)-/NOT /g;
它不应该转换它。
我已经使用了{{1}}提到的正则表达式并且它工作正常但我有另一种情况我们不需要转换短划线( - )if( - )属于双引号“”。
就像一个例子:keyword =“every-day”-time light。
它应该转换“每天”而不是时间光。
答案 0 :(得分:1)
正则表达式替换任何不遵循单词字符的短划线:s/(?<!\w)-/NOT /g;
现在将正则表达式更新为相同的内容,但不在双引号内:
use strict;
use warnings;
while (<DATA>) {
s{(".*?")|(?<!\w)-}{$1 // 'NOT '}esg;
print;
}
__DATA__
-day every
every -day time
every-day
"every - day" -time light.
输出:
NOT day every
every NOT day time
every-day
"every - day" NOT time light.