Java 如何将正则表达式与字符和某些符号的任意组合相匹配,但在';%之间的行中有两个破折号除外%和%';

Java 如何将正则表达式与字符和某些符号的任意组合相匹配,但在';%之间的行中有两个破折号除外%和%';,java,regex,Java,Regex,我要匹配以下字符串: '% Wal-Mart's %' 不匹配 '% Wal--Mart's %' 或包含“%1”和“%2%”之间两个破折号的任何其他字符串 当前我的正则表达式如下所示: (?<='%)[ \w',&+-]*(?=%') (?不重复字符集,您可以重复一个组,该组首先包含两个破折号的负前瞻,然后是原始字符集: (?<='%)(?:(?!--)[ \w',&+-])*(?=%') (?不重复字符集,您可以重复一个组,该组首先包含两个破折号的负前瞻

我要匹配以下字符串:

'% Wal-Mart's %'
不匹配

'% Wal--Mart's %' 
或包含“%1”和“%2%”之间两个破折号的任何其他字符串

当前我的正则表达式如下所示:

(?<='%)[ \w',&+-]*(?=%')

(?不重复字符集,您可以重复一个组,该组首先包含两个破折号的负前瞻,然后是原始字符集:

(?<='%)(?:(?!--)[ \w',&+-])*(?=%')

(?不重复字符集,您可以重复一个组,该组首先包含两个破折号的负前瞻,然后是原始字符集:

(?<='%)(?:(?!--)[ \w',&+-])*(?=%')

(?您可以使用负前瞻来断言您允许匹配的内容后面没有双破折号:


(?您可以使用负前瞻来断言您允许匹配的内容后面没有双破折号:


(?我不确定这是否与整个字符串匹配,而且环顾四周似乎有些无用…
”%(?:(?!-)[\w',&+-]))*%“
可能只需要很少的步骤就可以完成这项工作。从OP的正则表达式来看,我很确定他不想匹配
%”
分隔符,否则他不会使用lookarounds?不知道,实际上,尽管你说的有些道理。不过,他们在问题中显示了整个字符串,所以谁知道呢。很抱歉,混淆了,是的,我知道想要匹配
'%
%
之间的内容。这似乎有效!感谢您的帮助!我不确定这是否匹配整个字符串,并且环顾四周似乎有点无用……
'%(?:(?!-)[\w',&+-]))*%“
可能只需要很少的步骤就可以完成这项工作。从OP的正则表达式来看,我很确定他不想匹配
%”
分隔符,否则他不会使用lookarounds?不知道,实际上,尽管你说的有些道理。不过,他们在问题中显示了整个字符串,所以谁知道呢。很抱歉,混淆了,是的,我知道想要匹配
'%
%
之间的内容。这似乎有效!感谢您的帮助!