正则表达式只选择两个字符串之间的特定字符

时间:2019-07-16 21:35:17

标签: regex

我有以下HTML:

<i>This is my first sentence.        

This is my second sentence.</i>

如何使用Regex(在SublimeText FYI中)仅选择两个<i></i>中括号之间的空格(包括换行符)?

到目前为止,我可以选择所有字符,但是如何将其限制为仅空白和换行呢?:

(?<=<i.).*?(?=</i>)

https://regex101.com/r/eZ1gT7/1986

3 个答案:

答案 0 :(得分:1)

您不能使用单个正则表达式来做到这一点,可以结合使用正则表达式

  1. <\s*i[^>]+>([\s\S]+?)<\s*\/\s*i\s*>

Demo

这将为您提供标签<i>之间的值,标签之间的文本在captured group 1中可用,现在您可以循环查找匹配的值并找到任何space字符

  1. \s+

答案 1 :(得分:0)

我猜可能是这个表情

(?=\s*[\n\r])(\s*)(?=\S)

用单个空格()替换可能与您所想的很接近。


如果要浏览/简化/修改该表达式,请在this demo的右上角进行解释。

答案 2 :(得分:0)

您必须遍历捕获的组2: (<i[^>]+?>)?([ \n]*)(<\/i>)?

https://regex101.com/r/wcPwkU/1