例如,此<([a-z][a-z0-9]*)\b[^>]*>(.*?)</\1>
将匹配任何一对标记所包含的整行文本。但是如何匹配该行中的某个特定字符?例如,直单引号或撇号(')?
更新
以下是一些例子:
1)匹配单引号或撇号(')
<p>Lorem ipsum dolor sit amet, consectetu'r adipisicing elit.</p>
2)匹配单词 adipisicing 开头的双引号(这个单词只是一个例子,可以是任何单词或单个字母)。
<p>Lorem ipsum dolor sit amet, consectetur "adipisicing" elit.</p>
3)匹配单词 adipisicing 末尾的双引号(这个单词只是一个例子,可以是任何单词或单个字母)。
<p>Lorem ipsum dolor sit amet, consectetur "adipisicing" elit.</p>
表达式不应与任何标记对之外的任何内容匹配。在上面的示例中,它是一个段落,但它可以是任何内容:标题,范围,字体标记等。
更新#2
<link rel="stylesheet" type="text/css" href="styles.css" />
<span>hello, the world's ugliest dog</span><br>
<span>hello "world"</span><br>
<span>hello 'world'</span>
<p class="someclassname">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt "u" labore et dolore's magna aliqua.
</p>
<p class="someclassname">
Lorem 'ipsum' dolor sit amet, consectetur's adipisicing elit, sed do eiusmod tempor "incididunt" ut labore et dolore magna aliqua.
</p>
答案 0 :(得分:1)
替换那些单引号和双引号。
这适用于Notepad ++
查找内容:
<([a-zA-Z]\w*).*?>[^'"]+?\K(?:(['])((\w+)\2)?|(["])((\w+)\5)?)(?=[^<]*<\/\1>)
替换为:
(?{2}’)(?{3}$4’)(?{5}“)(?{6}$7”)
搜索模式:正则表达式(选中. matches newline
)
注意:使用“全部替换”,但在我的Notepad ++版本中,单步替换不能用于某种方式。
如果1个标签内容中的引号包含多于1个单词,则可能必须按全部替换按钮几次。
要了解其中发生的情况,请参阅test here on regex101
正则表达式使用惰性匹配.*?
到第一个单引号或双引号字符,而双qoute的第二个出现是可选的。
\K
确保第一部分不被消费
正如最后一部分的正向前瞻(?=
一样。
关于替换。
由于Notepad ++使用Boost的正则表达式引擎,因此可以使用条件替换。