尝试通过 REGEX 匹配文本
Trying to match text via REGEX
第一次发帖,需要一些关于正则表达式匹配的帮助。
这是我的格式
|user|DOMAIN\user|
我正在尝试编写一个只捕获用户名的正则表达式匹配,然后只捕获域。
我的思路是先匹配所有文本,然后创建(3)组?基于此我将获得我正在寻找的信息。
建议?例子?
如果您没有使用正则表达式匹配的限制,我建议您在管道处拆分字符串。这样,您的第一个或第二个令牌(取决于给定语言如何处理第一个管道之前的空令牌)将是用户。现在您可以从下一个标记的末尾删除 [length(user) + 1] 子字符串。这将为您提供域。
请注意,这里的假设是用户或域不包含任何竖线字符 (|)。
您正在寻找这样的正则表达式:
\|([^|]+)\|([^\]+)\([^|]+)\|
您可以在此处查看实际效果:http://refiddle.com/2we4
使用 non-greedy 量词有助于提高此处的可读性:
set data {|glenn|JACKMAN\glenn|}
regexp {^\|(.*?)\|(.*?)\} $data -> user domain
puts "$user:$domain"
产出
glenn:JACKMAN
这也是匹配用户名和域的另一个选项。
%设置数据{|glenn|JACKMAN\glenn|}
|格伦|JACKMAN\glenn|
% regexp {^\|([^|]+)\|([^\]+).*} $data m a b
1
% 放“--- a $a ----b $b----”
--- 格伦 ----b 杰克曼----
精确匹配的另一种方式。
% 正则表达式 {^\|([A-z]+)\|([A-z]+)\.*} $data m a b
1
% 放 "match $m--- a $a ----b $b----"
匹配 |glenn|JACKMAN\glenn|--- a glenn ----b JACKMAN----
第一次发帖,需要一些关于正则表达式匹配的帮助。
这是我的格式
|user|DOMAIN\user|
我正在尝试编写一个只捕获用户名的正则表达式匹配,然后只捕获域。
我的思路是先匹配所有文本,然后创建(3)组?基于此我将获得我正在寻找的信息。
建议?例子?
如果您没有使用正则表达式匹配的限制,我建议您在管道处拆分字符串。这样,您的第一个或第二个令牌(取决于给定语言如何处理第一个管道之前的空令牌)将是用户。现在您可以从下一个标记的末尾删除 [length(user) + 1] 子字符串。这将为您提供域。
请注意,这里的假设是用户或域不包含任何竖线字符 (|)。
您正在寻找这样的正则表达式:
\|([^|]+)\|([^\]+)\([^|]+)\|
您可以在此处查看实际效果:http://refiddle.com/2we4
使用 non-greedy 量词有助于提高此处的可读性:
set data {|glenn|JACKMAN\glenn|}
regexp {^\|(.*?)\|(.*?)\} $data -> user domain
puts "$user:$domain"
产出
glenn:JACKMAN
这也是匹配用户名和域的另一个选项。
%设置数据{|glenn|JACKMAN\glenn|}
|格伦|JACKMAN\glenn|
% regexp {^\|([^|]+)\|([^\]+).*} $data m a b
1
% 放“--- a $a ----b $b----”
--- 格伦 ----b 杰克曼----
精确匹配的另一种方式。
% 正则表达式 {^\|([A-z]+)\|([A-z]+)\.*} $data m a b
1
% 放 "match $m--- a $a ----b $b----"
匹配 |glenn|JACKMAN\glenn|--- a glenn ----b JACKMAN----