我正在编写一个脚本来遍历一个产品数据库,其中包含糟糕的、格式不一致的产品描述,以使其HTML统一。我遇到的一个问题是捕获和替换以相同方式格式化的代码行。例如,我想把他们的
• item 1
• item 2
• item 3
与
^{pr2}$将•
行替换为<li>content</li>
行很容易,但我一辈子都无法找出列表前后的正则表达式。我的想法是捕获以•
开头的所有内容,直到有一个新行不以•
开头。下面是我最新的尝试(python):
In : p = re.compile(
r'•.*(?!^•)'
)
In : p.findall(text, re.MULTILINE, re.DOTALL)
Out : []
In : p.findall(text, re.MULTILINE)
Out : ['• item 1', '• item 2', '• item 3']
In : p.findall(text, re.DOTALL)
Out : ['• item 1', '• item 2', '• item 3']
In : p.findall(text)
Out : ['• item 1', '• item 2', '• item 3']
关于如何捕获['• item 1\n• item 2\n• item 3']
之类的东西有什么想法吗?在
下面是一个基于非正则表达式的解决方案:
试运行:
^{pr2}$将内容读入字符串,然后在“&bull;”上拆分。迭代元素,在每个元素之前和之后分别添加“<;li>;”和“<;\li>;”。在
首先必须将所有项目符号更改为
<li>
元素,然后在第二次执行时将它们包含在<ul>
元素中。在下面是一个java示例。Python还使用PCRE,因此它的工作方式应该相同:
输出:
^{pr2}$相关问题 更多 >
编程相关推荐