我试图使用
replace-regexp-in-string
替换一个字符串中的两个部分,但每次只能让一个部分起作用。这里有一个例子:我想从字符串开头删除#
和空格,并从末尾删除换行符。当我将这两个调用合并为一个表达式时,我做错了什么?;; Test string
(setq inputStr "## Header Stuff
")
;; This doesnt trim the newline
(setq header
(replace-regexp-in-string "^[#\s]*\\|\n$" "" inputStr) )
;; Each match done separately works though
(setq header
(replace-regexp-in-string "^[#\s]*" "" inputStr) )
(setq header
(replace-regexp-in-string "\n$" "" header) )
header
"Header Stuff"
更新:问题似乎出在第一个表达式上,例如这个表达式将换行符和"S"
替换为"X"
,(replace-regexp-in-string "S\\|\n$" "X" inputStr)
。
(replace-regexp-in-string "^[#\s]*\\|\n$" "X" inputStr)
返回的结果。 - Barmar(replace-regexp-in-string "^[#\s]*\\|\n$\\'" "X" inputStr)
。 - Rorschach$
匹配行尾,\\'
匹配字符串结尾。 - Barmar