这也是匹配用户名和域的另一个选项。 % set data {|格伦|JACKMAN\glenn|} |格伦|JACKMAN\glenn| % regexp {^|([^|]+)|([^]+).} $data m a B 1 % puts“--- a $a ----B $b----” --- a格伦----B杰克曼---- 另一种方法是精确匹配。 % regexp {^|([A-z]+)|([A-z]+).} $data m a B 1 % puts“match $m--- a $a ----B $b----” 匹配|格伦|JACKMAN\glenn|--- a格伦----B杰克曼----
4条答案
按热度按时间tp5buhyn1#
在这里使用非贪婪量词对可读性有很大帮助:
产出
vqlkdk9b2#
你正在寻找这样的正则表达式:
eagi6jfj3#
如果你没有使用正则表达式匹配的约束,我建议你在管道处拆分字符串。这样,您的第一个或第二个标记(取决于给定语言如何处理第一个管道之前的空标记)将是user。现在您可以从下一个标记的末尾删除[length(user)+ 1]子字符串。这将为您提供域。
请注意,这里的假设是user或DOMAIN不包含任何管道字符(|).
4uqofj5v4#
这也是匹配用户名和域的另一个选项。
% set data {|格伦|JACKMAN\glenn|}
|格伦|JACKMAN\glenn|
% regexp {^|([^|]+)|([^]+).} $data m a B
1
% puts“--- a $a ----B $b----”
--- a格伦----B杰克曼----
另一种方法是精确匹配。
% regexp {^|([A-z]+)|([A-z]+).} $data m a B
1
% puts“match $m--- a $a ----B $b----”
匹配|格伦|JACKMAN\glenn|--- a格伦----B杰克曼----