我怎么能匹配,除非它们包含一个点的所有单词的每一个字,像匹配,除非它包含点
我想 except.this 等类似的词语用点匹配一切都在他们
我试过\b(?!\w+\.\w+)\w+\b
但这没有奏效。
不管我如何使用\w+
,\\.
等解释仍然符合部分“忽略。我”点后面。它有一个简单的语法吗?只是逃避这一点似乎并不奏效。
我怎么能匹配,除非它们包含一个点的所有单词的每一个字,像匹配,除非它包含点
我想 except.this 等类似的词语用点匹配一切都在他们
我试过\b(?!\w+\.\w+)\w+\b
但这没有奏效。
不管我如何使用\w+
,\\.
等解释仍然符合部分“忽略。我”点后面。它有一个简单的语法吗?只是逃避这一点似乎并不奏效。
我建议以下pattern:
(?:^|\s)(?:(?!\.)[\w'])+(?=\s|$|[.?!](?:\s|$))
JS /正则表达式测试:
const regex = /(?:^|\s)(?:(?!\.)[\w'])+(?=\s|$|[.?!](?:\s|$))/g;
const str = `aaa blabla fasdfdsa ignoremenot.
bbb igno.reme ad
It's fine?`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match.trim()}`);
});
}
有一个问题:你要修剪比赛,以消除不必要的空格,可以显示因为我们不能在JavaScript的正则表达式中使用lookbehind,如下所示:(?<=^|\s)(?:(?!\.)[\w'])+(?=\s|$|[.?!](?:\s|$))
见['(?:\ s | ^)(?!(?:igno \。?reme | ignoreyou)(?!\ S))\ S +'](https://regex101.com/r/NmPWvc/ 3)。 –
你真的需要一个正则表达式还是一个简单的函数就足够了?我猜如果你可以写一个函数,那么它会很快,并将覆盖所有的边缘情况 –
那么,这是做我想做的主流方式。 我正在通过法国服务(dl.free.fr)和FileZilla发送一个较小的大文件,而不是像单个邮件那样获取单个链接,我试图解析信息日志。在这种情况下,我需要获得这种形式的链接(http://dl.free.fr/vtS3cOunq),并忽略这样的链接:(http://dl.free.fr/rm.pl?h=)和这个正则表达式工作: http:\/\/dl.free.fr \/[a-zA-Z0-9] * [^ http:\/\/dl.free.fr^\/rm.pl] 但这让我想到了其他需要忽略“rm.pl”的情况。 – Gemeney