与字符和数字混合相关的tcl regexp
我的文件包含与字符和数字混合相关的tcl regexp,regex,tcl,regexp-replace,Regex,Tcl,Regexp Replace,我的文件包含 roll_number : someNumber ; name(mixOfcharactersAndNumbers) filePathInLinux 比如 roll_number : 81 ; name(JOHN_23_CARTER) /home/directory/johnc roll_number : 22 ; name(michael21_Lee) /home/directory/mhlee 我的regexp是 regexp {.*name([a-zA-Z0-9]+.
roll_number : someNumber ; name(mixOfcharactersAndNumbers) filePathInLinux
比如
roll_number : 81 ; name(JOHN_23_CARTER) /home/directory/johnc
roll_number : 22 ; name(michael21_Lee) /home/directory/mhlee
我的regexp是
regexp {.*name([a-zA-Z0-9]+.*} $line match name
regexp {.*name(.*).*} $line match name
似乎由于数字和字符的混合,我不能正确地使用regexp,我是不是遗漏了什么 主要问题是,您没有转义
(
字符,也没有解释第一个正则表达式中的\ucode>字符。此外,您不需要匹配整个输入,TCL正则表达式不需要允许部分匹配,即在较长的子字符串中匹配较短的子字符串
只需匹配名称(
(使用名称)(
),然后将一个或多个单词字符捕获到组1中(使用(\w+)
):
请参见打印JOHN\u 23\u CARTER
另外,请参见
set a "roll_number : 81 ; name(JOHN_23_CARTER) /home/directory/johnc"
regexp {name\((\w+)} $a - name