尝试通过REGEX匹配文本

时间:2016-01-11 18:46:07

标签: regex tcl

第一次发帖,需要一点正面帮助,我正试图想出来。

这是我的格式

|user|DOMAIN\user|

我正在尝试编写一个仅捕获用户名的正则表达式匹配,然后只捕获域。

我的思维过程是首先匹配所有文本,然后创建(3)组?基于此我会得到我正在寻找的信息。

连连呢?实例

4 个答案:

答案 0 :(得分:1)

你正在寻找像这样的正则表达式:

\|([^|]+)\|([^\]+)\\([^|]+)\|

您可以在此处看到它:http://refiddle.com/2we4

答案 1 :(得分:1)

使用非贪婪量词有助于提高可读性:

@Component() {
    template: '{{cats.captchans.funniest}}'
}
export class CatsComponent {

    public cats: CatsModel;

    ngOnInit () {
        this._http.get('/api/v1/cats').subscribe(response => cats = response.json());
    }
}

输出

set data {|glenn|JACKMAN\glenn|}
regexp  {^\|(.*?)\|(.*?)\\} $data -> user domain
puts "$user:$domain"

答案 2 :(得分:0)

如果您没有使用正则表达式匹配的约束,我建议您将字符串拆分为管道。这样,您的第一个或第二个令牌(取决于给定语言在第一个管道之前如何处理空令牌)将是用户。现在,您可以从下一个标记的末尾删除[length(user)+ 1]子字符串。这将为您提供DOMAIN。

请注意,此处的假设是,用户或DOMAIN不包含任何管道符(|)。

答案 3 :(得分:0)

这也是匹配用户名和域名的另一种选择。

%设置数据{| glenn | JACKMAN \ glenn |}

|格伦| JACKMAN \格伦|

%regexp {^ \ |([^ |] +)\ |([^ \] +)。*} $ data m a b

1

%put" --- a $ a ---- b $ b ----"

---一个glenn ---- b JACKMAN ----

完全匹配的另一种方式。

%regexp {^ \ |([A-z] +)\ |([A-z] +)\。*} $ data m a b

1

%put"匹配$ m --- a $ a ---- b $ b ----"

match | glenn | JACKMAN \ glenn | --- a glenn ---- b JACKMAN ----