我的perl脚本中有一个正则表达式/Operating System:\s*(.*)/
。
我匹配的行是Operating System: Windows XP Service Pack 3
但是,在该行之后输入后有一个新行。因此,该文本将被视为Operating System: Windows XP Service Pack 3^M
。
无论如何使用我现有的正则表达式摆脱^M
?它捕获Windows XP Service Pack 3^M
但^M
仅在我使用命令提示符或PuTTy的more
显示内容时才显示。我使用vi
或vim
进行编辑时会显示。
对此有何帮助?
答案 0 :(得分:2)
我认为使用我在解决主要问题的解决方案中使用的模式更直观,而不是CR的预测
[Flags]
捕获/Operating System:\s*(.*\S)/
之后从第一个到最后一个非空格字符的所有内容。除了更具可读性之外,这种模式的主要优点是可移植,并且不依赖于行尾的尾随CR(无论如何可能不会出现在文件的最后一行)。
CR和LF都计为空格,因此它将忽略它们以及文件中可能包含的任何尾随空格或制表符
答案 1 :(得分:0)
Operating System:\s*(.*)(?=\r)
你可以试试这个。
搜索时
...
\ n是换行符,\ r是CR(回车= Ctrl-M = ^ M)