我是regex的新手并且已经对此进行了大量搜索,但无法理解它。
我需要匹配一个字符串(可能包含空格),让我们说 The Dog ,但只有当它是该行上的唯一项目时(后跟\ n字符)。例如,我的输入文件可能包含以下内容,但我只对The Dog的第一个实例感兴趣(它是唯一可以将其与潜在的其他实例区分开来的方式):
The Dog
property 1 : 5
property 2 : depends on The Dog
property 3 : more data
狗单独出现在该行上,它可能会或可能不会以空格开头。
我找到类似的问题,答案提示诸如(^ | [])之类的东西,检查字符串的开头或前面的空格,但我到目前为止找到的所有建议都匹配我的两个实例例。
有人可以帮忙吗?感谢。
答案 0 :(得分:1)
它实际上取决于您使用的正则表达式,但大多数都允许m
标记,以确保^
和$
标记匹配开头和结尾(分别)每一行。有了它,结合\s*
消耗任何空格,如果有的话,你可以使用以下内容:
^\s*The\s*Dog\s*$
答案 1 :(得分:0)
答案 2 :(得分:0)
在javascript中,您可以执行以下操作:
var doesMatch = (" The Dog").match(/^\s*The Dog\s*$/);
if (doesMatch) {
//found a match
}
答案 3 :(得分:0)
非常感谢,我用了
^ \ S 的\ S 犬\ S * $
答案 4 :(得分:0)
因为“狗”只是根据你原来的帖子的一个例子,我建议使用^(?:\s*\w*)+\n
。
这匹配一个行开头,然后匹配1到无限次重复零或无限数量的空格(\ s *),后跟零或无限数量的单词字符(\ w *),后跟换行符。
由于字符串中的(?:)
部分,将不会捕获匹配的部分。如果您只想测试字符串是否匹配,这非常有用。如果要捕获字符串的哪个部分匹配,请使用^((?:\s*\w*))+\n
。
但正如“R Nar”指出的那样,它取决于正则表达式的味道。上面的正则表达式可以在javascript中工作,但是在python中就可以了。告诉我们您尝试使用哪种编程语言匹配主题字符串,我们可以为您提供一个有效的示例。
如果你使用javascript,这里是你如何循环捕获匹配的字符串部分的所有匹配:
var myregexp = /^((?:\s*\w*)+)\n/g;
var match = myregexp.exec(subject);
while (match != null) {
// matched text: match[0]
// match start: match.index
// capturing group 1: match[1]
match = myregexp.exec(subject);
}