在PostgreSQL中使用LocalId
有一个包含以下内容的文本字段:
regexp_matches
尝试获取[a1,a2,a3,...,an]列表但排除b1..bn,c1..cn
到目前为止,我能够使用多个子查询来获取它,第一个在unique_string_abc
<ul>
<li>a1</li>
<li>a2</li>
...
<li>an</li>
</ul>
blah
blah
<ul>
<li>b1</li>
...
<li>bn</li>
</ul>
blah
blah
<ul>
<li>c1</li>
...
<li>cn</li>
<ul>
blah
之间返回完整的字符串,然后使用以下命令将其拆分:
<ul>...</ul>
但是想到SELECT regexp_matches(html_text,
'unique_string_abc\s*?<ul>\s*?(<li>.*?<\/li>)\s*?</ul>',
'g')
使用前瞻或后瞻的单一正则表达式必须有一种更简单的方法吗?
任何指针都会非常感激!
答案 0 :(得分:0)
我把它压缩成两步。我认为压缩成单步的正则表达式只能在某些特殊情况下使用,因为这个问题。
Lookbehinds需要为零宽度,因此不允许使用量词
将包含li标签的[a1更改为a]并排除[b1至cn] (我认为[a1到an]和[b1到cn]之间的区别是消息&#34; unique_string_abc&#34;在你的正则表达式的&lt; ul&gt;标记后面。)
(小于?= unique_string_abc \ S&LT; UL&GT;)[\ S \ S] *(= LT; / UL&GT)?
提取[a1到an]。
(小于?= LT;李&GT)。*(= LT; /立GT)