无法理解tcl regexp模式匹配,使用^和+

YNW*_*NWA 1 regex tcl

我有一个简单的TCL正则表达式匹配,

regexp {^[^,]+} $n id
Run Code Online (Sandbox Code Playgroud)

适用于像"1,last"这样的字符串.它剥离文本并仅返回数字,但我无法理解它是如何工作的我虽然"^"符号的意思是"忽略"/否定

我不知道它是如何确定数字的,希望你能帮助我...谢谢

Tim*_*ker 6

^ 可以有两个含义.

在字符类之外,它是一个锚,意思是"字符串的开头"(或者行的开头,取决于当前选项).

在一个字符类中,它否定了它的内容.[^abc]匹配既不是aa b,a也不是a的字符c.

因此,在您的示例中,正则表达式仅匹配字符串/行的开头,从而允许[^,]+匹配1并阻止匹配last.

  • 嗯,好吧 - 所以这里的正则表达式就是这样 - 1.查找字符串的开头2.返回所有内容,直到","/逗号?(感谢您的快速回复!) (2认同)