如何使我的正则表达式选项卡排除模式不排除ts?

时间:2012-03-30 23:53:29

标签: regex

我正在使用一些制表符分隔的字符串,所以我一直在使用以下匹配模式来匹配除标签之外的所有内容:

[^\\t]+

不幸的是,我的模式在文本中排除了ts。例如:

"Jim\tand\tjane\twent\tto\twork."  

符合以下条件:

Jim and jane wen o work.

有关如何排除标签但包含ts的任何想法。

更新:我尝试在Rubular和RegexPal上使用[^ \ t] +。这两个网站似乎都没有将其识别为标签。然而,两者都将\ t识别为制表符和t。

第二次更新:我认为这是一个接口问题。我将模式放入rails控制台,[^ \ t]确实可以正常工作。感谢大家的好评和意见。

2 个答案:

答案 0 :(得分:5)

看起来用户界面可能会干扰你一点。问题的一半是[^\t]不需要反斜杠转义。

问题的另一半是Web界面不接受键盘上的标签,因此它认为您的测试字符串实际上包含反斜杠后跟t。

尝试在外部文本编辑器中键入选项卡,然后将该选项卡复制并粘贴到Rubular中的测试字符串中,使其看起来像空白。然后[^\t]+应匹配非标签而不省略't'字符。

答案 1 :(得分:1)

伊戈尔是对的。将正则表达式更新为[^\t]+可以解决您的问题。

您的原始正则表达式[^\\t]+将被解释为:匹配1个或更多,+,字符除了,^,反斜杠,\或小写字母t ,t

rubular.com使用[^\x09]+的工作示例和“Jim and jane开始工作。”

rubular.com使用[^\t]+的工作示例和“Jim and jane开始工作。”