我正在使用以下perl表达式从here
中删除标签$text =~ s{(.*?)\t}{$1.(' ' x ($g_tab_width - length($1) % $g_tab_width))}ge;
我已将我的理解和翻译简化为以下内容(假设标签宽度为四个空格)
$text =~ s/(.*?)\t/' '/;
但我觉得我已经破坏了爱因斯坦的指示
让事情变得尽可能简单,但并不简单。
我正在使用以下输入字符串进行测试。
"\t \t"
"\t\t \t"
"\t\t \t\t \t"
"\t\t \t\t \t"
有人可以演示一个输入字符串,它会在这两者之间产生不一致的结果吗? (在删除标签的问题空间内)
答案 0 :(得分:2)
我假设您的第二个简化表达式应该是:
$text =~ s/(.*?)\t/$1 /g;
# four spaces -------^^^^
并且$g_tab_width
是四;没有别的东西对我来说有意义,所以我会危险地生活,并认为事情应该是有意义的。
鉴于此,几乎任何带有标签的东西都会产生不同的结果。例如:
"where\tis pancakes house?"
产生以下结果:
"Where is pancakes house?" # Long method.
"Where is pancakes house?" # Simplified method.
只有当非标签组件的长度都是4 * n时才会产生相同的结果,例如:
"xxxx\tyyyy\tzzzz"