匹配每个字符,直到在行首出现模式(JavaScript)
match every character until a pattern occurs in the beginning of the line (javascript)
我有这样的文字:
<a>
a lot of text here with all types of symbols ! : . %& < >
</a>
<a>
another text here with all types of symbols ! : . %& < >
</a>
我想匹配标签名称及其内容:所以我使用的过程是匹配的:
<([^]*?)>(?:([^]*)<'/'1>)?
注意:例如,我在末尾使用条件组,因为它可以省略。
<a>
<a>
another text here with all types of symbols ! : . %& < >
</a>
但我的问题是正则表达式尝试消耗每个字符,因此它会打开和关闭选项卡,选项卡的内容变为:
<a>
another text here with all types of symbols ! : . %& < >
当我想检测两个匹配项时,一个是隔离标签,另一个是多行标签。
注意2:这不是HTML或XML,所以我不需要像明智地解析它一样。注意3:我的想法是替换正则表达式部分:
(?:([^]*)....
通过"匹配每个字符,直到'<'出现在行首的东西(这是因为在我正在解析的文本中,标签内不能有标签),所以我认为这会很好......但我似乎找不到该:(的正则表达式
我认为你想要的是/<([a-z0-9-]+)>([^]*?)(?:(<'/'1>)|$|(?=(?:<[a-zA-Z0-9'-]+>)))/gi
我建议你通过程序解析它:
- 匹配任何开始标记的第一次出现:
<([a-z0-9]+)>
有了这个,您可以获取标签的名称。 - 获取任何开始标记的第二次出现的位置,以及与之前读取的名称相同的结束标记的第一次出现的位置。
- 比较这些位置并确定它是单行刚打开标签还是多行打开和关闭标签。
- 获取第一个开始标记和步骤 2 中获取的最低位置之间的内容。
相关文章:
- 在引导模式中,点击相应的datatables行中的按钮,填充数据
- 从引导程序3删除模式向laravel控制器传递行id
- 对文本区域段落的每一首行应用缩进
- 将数据库行“馈送”到接口的模式
- 将选定的数据行传递到模式引导程序中
- 如何防止在响应模式下图像换行
- 需要.js从命令行模式
- 匹配每个字符,直到在行首出现模式(JavaScript)
- 在剑道网格中有选择地将编辑行中的单元格切换为编辑模式
- 生成具有特定模式的“串行”代码
- 尝试向字符串中的每个找到的模式添加换行符
- JavaScript V8 正则表达式引擎中的错误在匹配行首时
- Kendoui ListView在编辑模式下删除行
- Jquery同位素PLugin:自定义布局模式:类别行-如何为每个类别行添加标题
- Vim:如何从行首开始计算缩进量
- 是否不可能在JavaScript中使用多行regex模式来指示输入字符串的开始
- 在javascript中删除行首的逗号
- Javascript删除行匹配模式
- 匹配出现在表格单元格行首的单词
- Regex匹配:被空格或行首包围,但不匹配