我要疯了,试图让一个正则表达式来检测用户输入中的关键字垃圾邮件。通常在开头有一些普通文本,在结尾有关键字 spam,用逗号或其他字符分隔。
我需要的是一个正则表达式来计算关键字的数量以标记文本以供人类检查。
文字通常是这样的:
[random text, with commas, dots and all]
keyword1, keyword2, keyword3, keyword4, keyword5,
Keyword6, keyword7, keyword8...
我已经尝试了几个正则表达式来计算匹配:
- 这只能得到两个关键字中的一个
[,-](\w|\s)+[,-]
- 这也匹配随机文本
(?:([^,-]*)(?:[^,-]|$))
谁能告诉我一个正则表达式来做到这一点?还是我应该采取不同的方法?
谢谢!
公关您对我的问题的回答,这是一个匹配出现在两个逗号之间的字符串的正则表达式。
(?<=,)[^,]+(?=,)
此正则表达式不匹配,因此不使用分隔逗号。此正则表达式将匹配上一句中的“因此不消耗”。
您的正则表达式匹配并使用逗号这一事实是您尝试的正则表达式仅匹配所有其他候选人的原因。
此外,如果整个输入是单个字符串,您将需要防止换行符。在这种情况下,您将要使用;
(?<=,)[^,\n]+(?=,)
http://www.phpliveregex.com/p/1DJ