我想知道如何忽略跟随正则表达式中特定模式的字符。 我尝试了积极的前瞻,但他们没有工作,因为他们保留了其他比赛的那些角色,而我希望他们只是......丢弃。
例如,我的正则表达式的一部分是:(?<DoubleQ>\"\".*?\"\")|(?<SingleQ>\".*?\")
为了匹配这个字符串的一些“关键部分”:
This is a ""sample text"" just for "testing purposes": not to be used anywhere else.
我想要捕获整个""sample text""
,但之后我只想“提取”sample text
和testing purposes
一样。也就是说,我希望该组匹配为""sample text""
,但我希望完整匹配为sample text
。我通过使用\K
选项部分实现了这一点:
(?<DoubleQ>\"\"\K.*?\"\")|(?<SingleQ>\"\K.*?\")
这会忽略完整匹配中的第一个""
(或"
),但在匹配组时会将其考虑在内。如何忽略以下""
("
)?
注意:正向前瞻不起作用:它不会从以下匹配中忽略字符,它只是在当前匹配中不包含它们。
非常感谢。
答案 0 :(得分:2)
我希望我的问题是正确的。所以你想匹配整个字符串,包括引号,但是你想要只替换/提取没有引号的表达式,对吗?
您通常可以使用正则表达式replace
功能提取只是匹配的一部分。
这是正则表达式:
""?(.*?)""?
这就是替换表达式:
$1