所以我不能使用$'变量
但是我需要找到一个以“ by:”开头的字符串,然后是任何字符的文件中的模式,然后将“ by:”之后的任何字符替换为现有的字符串$ foo
我使用$ ^ I和while循环,因为我需要更新文件中的多个字段。
我在考虑[s ///]
s/(by\:[a-z]+)/$foo/i
我需要帮助。是的,这是一个作业问题,但是我在5个小时内就失去了许多脑细胞
答案 0 :(得分:1)
替换时出现一些问题:
TestFunctionObject
(冒号后的空格),但是您的正则表达式将永远不会匹配该空格。by:
表示将一个或多个出现的字母[a-z]+
匹配到a
。但是您说过要匹配“任何字符”。可能是零个字符,并且可能包含非字母。z
,但输了$foo
。整个匹配的字符串都将替换为替换字符串。by:
。我假设您正在逐行处理文件。您希望“以字符串:
开头,后跟任何字符”。这是正则表达式:
by:
/^by: .*/
匹配行首。然后^
与这些字符完全匹配。 by:
匹配换行符以外的任何字符,并且.
表示零个或多个前一项。因此*
与该行上的所有其余字符匹配。
”用现有字符串.*
替换by:
之后的任何字符。我假设您是指变量$foo
的内容,而不是文字字符$foo
。这是:
$foo
因为我们匹配了s/^by: .*/by: $foo/;
,所以我在替换字符串中重复了它,因为您想保留它。 by:
将插入替换字符串中。
另一种写法是:
$foo
在这里,我们在第一组括号中捕获了文本s/^(by: ).*/$1$foo/
。该文本将在by:
变量中可用,因此我们可以将其插入到替换字符串中。