“替换串”可以由多行文本中的多个实例组成。例如,在你平时回复一封邮件时,你可能在新邮件中会通过在行首添加 “>” 符号来引用原邮件的中的内容。正则表达式就可以做这样的标记。
然而,要完成它,你可能得稍微了解一点“多行”模式。通常,该模式是关闭的,此时限定符”^”代表文本的开始,”$”代表文本的结束。要让这两个限定符可以代表文本行的开始和文本行的结束,必须使用”(?m)”来开启“多行”模式。只有这样,–replace 才会在每个单独的文本行之间替换模式。在“多行”模式开启后,限定符”^” 和 “\A”,还有”$” and “\Z”会顿时拥有不同的表现。”\A”仍然会标志文本的开始,而”^”则会标志文本行的开始。”\Z”仍然会标志文本的结尾,而”$”则会标志文本行结尾。
$text = @" 这是一段文本, 我想在回复的邮件中引用它, 所以我在每行的开始追加了">" 符号。 "@ 这是一段文本, 我想在回复的邮件中引用它, 所以我在每行的开始追加了">" 符号。 # 通常, -replace 没有工作在多行模式. # 鉴于此,只有第一行的开始被替换了: $text -replace "^", "> " > 这是一段文本, 我想在回复的邮件中引用它, 所以我在每行的开始追加了">" 符号。 # 如果你开启了多行模式, 替换串则会多行文本中起作用: $text -replace "(?m)^", "> " > 这是一段文本, > 我想在回复的邮件中引用它, > 所以我在每行的开始追加了">" 符号。 # 你也可以使用RegEx对象来完成多行替换, # 不过得显式指定多行模式 [regex]::Replace($text, "^", "> ", ` [Text.RegularExpressions.RegExOptions]::Multiline) > 这是一段文本, > 我想在回复的邮件中引用它, > 所以我在每行的开始追加了">" 符号。 # 在多行模式中 \A 仍旧代表文本的开始,^代表行的开始 # 这就是为什么下面的方法只能替换第一行的开始 [regex]::Replace($text, "\A", "> ", ` [Text.RegularExpressions.RegExOptions]::Multiline) > 这是一段文本, 我想在回复的邮件中引用它, 所以我在每行的开始追加了">" 符号。
本文链接: https://www.pstips.net/search-beginning-of-line.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!