我在弄清楚正则表达式如何工作方面遇到了很大的问题。 我想要这个文字:
This is an example\e[213] text\e[123] for demonstration
成为这个:
This is an example text for demonstration.
所以这意味着我要删除所有以\e[
开头并以]
结尾的字符串
我只是找不到合适的正则表达式。
我目前的正则表达式如下:
/.*?(\\e\[.*\])?.*/ig
但它不起作用。我感谢你的每一个帮助。
答案 0 :(得分:3)
你只需要这样做:
txt.gsub(/\\e\[[^\]]*\]/i, "")
无需与.*
第二个问题是您使用.*
来描述括号之间的内容。由于*
量词默认为贪婪,因此它将匹配所有直到同一行中的最后一个右括号。
要防止出现这种情况,可以使用否定字符类代替排除方括号[^\]]
的点。通过这种方式,您可以保持使用贪婪量词的优势。
答案 1 :(得分:2)
gsub
可以为您进行全局匹配。
re = /\\e\[.+?\]/i
'This is an example\e[213] text\e[123] for demonstration'.gsub re, ''
=> "This is an example text for demonstration"
答案 2 :(得分:1)
使用正则表达式
中的.+?
可以减少搜索搜索量
puts 'This is an example\e[213] text\e[123] for demonstration'.gsub(/\\e\[.+?\]/, '')
This is an example text for demonstration
=> nil