我想使用正则表达式,这样我就会得到一个没有“。”的用户名匹配列表。出现在名称
帐户名称:sasha.grey //错误匹配
帐户名称:liz.hurley //错误匹配
帐户名称:sharonstone //匹配
试用正则表达式:
帐户名称:\ s +(。*?(?!。))
我在Regexbudy上尝试了这个匹配,结果在两种情况下都不起作用。
答案 0 :(得分:1)
Account Name:\s+(?=[^.]*$).+$
您可以使用positive lookahead
或
Account Name:\s+[^.]+$
答案 1 :(得分:1)
我认为vks回答是正确的。
另一种方法(完全避免前瞻)就是简单地匹配除.
和\n
之外的所有内容(以及帐户名称中不应包含的任何字符
Account Name:\s+([^.\n]+)$
编辑:$
标记行尾(文件的末尾 - 取决于风味)。您可能希望改为使用\n
。
也许你想知道你的表情在做什么:
\s+(.*?(?!.))
无效,因为您匹配
\s+
空格(一个或多个出现).*?
任何字符(一个或多个,但尽可能少) (?!.)
不是任何字符,\n
如果您想忽略文字.
,则必须将其撤消(因此它(?!\.)
或(?![.])
- 但是之后,它仍然无效说明是:非文字点的前瞻。在此示例中,您在每个示例中都将''
与.*?
匹配
答案 2 :(得分:0)
使用否定先行断言。
Account Name:\s+(?!.*?\.).+
或
Account Name:\s+\w+$