如何跳过正则表达式末尾的符号

本文关键字:符号 何跳过 正则表达式 | 更新日期: 2023-09-27 18:28:04

我有下一个正则表达式:

const string pattern        = "(''w)</span>";
const string replace        = "$1&nbsp;</span>";
var rgx                     = new Regex(pattern);

所以,它与所有结束的东西都匹配,并且前面有一个符号。我想让它匹配相同的短语,除了在结尾有标点符号的一次

示例:

 Mom</span>, is awesome ....

我不希望它也匹配:

Adventure is the best</span>. So now we keep on doin it ...

我试过了:

const string pattern        = "(''w)</span>[^''W]$";
const string pattern        = "(''w)</span>(^''W)$";

但它根本不起作用。

我正在寻找的结果:如果有一个短语:

Mom</span>, Dad

作为html文本的一部分,我不想匹配它,因为我不想在逗号前面添加空格->妈妈,爸爸。我想让它留在妈妈,爸爸解析后。

但如果我有:

Mom</span>and Dad (After parsing it comes like : Momand Dad)

我想在"answers"之前加一个空格,这样解析后就可以变成"爸爸妈妈"。

我希望现在你能知道我在做什么!

如何跳过正则表达式末尾的符号

试试这个:

const string pattern  = "(''w)</span>(?![.])";

如果标点符号前面可能有空格,你可以试试这个:

const string pattern  = "(''w)</span>(?!'s*[.])";

怎么样:

    const string pattern        = "(''w)</span>[^,.]";

这[^,.]表示不同于:、或的任何一个字符。

你可以扩展到[^,.;:]或任何其他你需要的东西,也许你可以使用[^,.]一个像*或+这样的量词来指定可能有多个标点符号。

    I tried something but i could not get any direct idea. Just sharing some different method.
    Have two pattern one with punctuation and another without punctuation
    Without punctuation pattern:
        const string pattern = "(''w)</span>([^'.',]+)$"; (u replace with space)
    Another one with punctuation pattern:
        const string pattern = "(''w)</span>[','.''w]+$"; (u replace without space)

In both pattern add the punctuations you want at end eg. ([^':';]+)$