我正在寻找一个正则表达式来捕获包含点的句子中的整个单词或表达式:
this is an example test.abc.123 for what I am looking for
在这种情况下,我想捕获“ test.abc.123”
我尝试过此正则表达式:
(.*)(\b.+\..++\b)(.*)
(.*)
某些迹象
(\b.+\..++\b)
一个包含一些符号的单词,其后至少包含一个点,再加上一些符号,并且至少包含一次
(.*)
也有一些迹象#
但它却得到了我:“我要寻找的是abc.123”
我看到我完全错了,有人可以启发我吗?
答案 0 :(得分:2)
如果您需要匹配字符串的一部分,则不需要匹配整个字符串(除非您受到功能的限制)。
您的正则表达式是如此贪婪。它还在每个位置都有点(多数情况下.+
并不是一个很好的选择)。它也没有精确的起点和终点。您只需要:
\w+(?:\.+\w+)+
它将查找以单词字符开头和结尾且至少包含一个句点的字符串。参见live demo here
答案 1 :(得分:0)
此正则表达式模式匹配带有两个或多个点的字符串:
.*\..*\..*
”。匹配除换行符以外的任何字符 “ *”重复先前的标记0次或更多次 “。”匹配单个点,斜杠用于转义
。*匹配任何字符并继续匹配,直到下一个标记
test.abc.123
(。)匹配单个点
测试。 abc.123
。*同样,任何字符都将继续匹配,直到下一个标记
test.example .com
。匹配单个点
测试示例。 com
。*匹配任何字符并继续匹配,直到下一个标记
test.example.com
答案 2 :(得分:-1)
尝试以下模式:(?=\w+\.{1,})[^ ]+
。
详细信息:(?=\w+\.{1,})
-正向超前查找,以查找至少有一个点(.
)的单词的开头。然后,从该位置开始匹配,直到具有[^ ]+
模式的空格为止。
How to Deploy your Alexa Skill and Google Action to Heroku > Updating the Package.json