使用以下文本作为示例,我需要能够在LI标记之间提取文本.请注意,第一个LI是故意错误形成的,因为可能是这种情况.换句话说,我想要从LI标签到关闭LI标签或下一个LI开口标签的所有内容.
<UL>
<LI class="test">This is the first ListItem Text.
<LI>This is the second ListItem Test. </LI></UL>
Run Code Online (Sandbox Code Playgroud)
到目前为止,我想出了:
<[Ll][Ii].*>(.*?)((?:<[Ll][Ii]>)|(?:</[Ll][Ii]>))
Run Code Online (Sandbox Code Playgroud)
但是这似乎与第一个LI标记匹配,直到结束标记与作为第二个LI标记的文本的组匹配.我设法让它返回第一组,但从来没有.我正在使用"Dot matches newline"选项,这是.NET,我需要它才能工作.谢谢!
UPDATE
我在发布这个问题之前做了一些研究,事实上看到并理解使用正则表达式来解析HTML是一个坏主意.话虽这么说,我只需要能够从这里和那里的几个LI标签中获取文本,以确定在powerpoint幻灯片上播放哪些文本.我认为可能有一种更简单的方法来做,而不是处理一个单独的库,特别是当使用第三方库很难处理我的工作.不幸的是,当在页面上使用html富文本输入框时,HTML可能会在某些情况下导致格式不正确,从而允许您对文本进行细化.感谢所有针对REGEX用于解析HTML的建议.我应该预先指出我已经阅读了很多类似的建议但是正在寻找一个简单的环境快速解决方案.
我想使用perl reg ex one liner来匹配段落标记的内容.该段落是这样的:
<p style="font-family: Calibri,Helvetica,serif;">Text I want to extract</p>
Run Code Online (Sandbox Code Playgroud)
所以我一直在使用这样的东西:
perl -nle 'm/<p>($.)<\/p>/ig; print $1' file.html
Run Code Online (Sandbox Code Playgroud)
任何想法都赞赏
谢谢
我正在编写一个解析一些命令的应用程序.命令以下列形式给出:
A {B}
我只想要A和B.A是可选的,但这很容易处理.我遇到的问题是A和B几乎都可以包含任何字符,包括空格和'{'和'}'.括号也不需要平衡.这可以用正则表达式解析吗?如果没有,您认为可以做的最简单的事情是什么?
例如,给定:
"parsme {foo {"hello"} {"goodbye"} {{{} {bar {"up"} {"down"}}"
然后:
A ="parseme {foo {"hello"} {"goodbye"} {{{}}和B ="bar {"up"} {"down"}"
我有这个小代码,它给了我AttributeError:'NoneType'对象没有属性'group'.
import sys
import re
#def extract_names(filename):
f = open('name.html', 'r')
text = f.read()
match = re.search (r'<hgroup><h1>(\w+)</h1>', text)
second = re.search (r'<li class="hover">Employees: <b>(\d+,\d+)</b></li>', text)
outf = open('details.txt', 'a')
outf.write(match)
outf.close()
Run Code Online (Sandbox Code Playgroud)
我的目的是读取一个.HTML文件,查找<h1>标签值和员工数量,并将它们附加到文件中.但由于某些原因,我似乎无法做到正确.非常感谢您的帮助.
我是Perl的新手,我试图<li> </li>在字符串中的所有标签之间提取文本,并使用正则表达式或分割/连接将它们分配到数组中.
例如
my $string = "<ul>
<li>hello</li>
<li>there</li>
<li>everyone</li>
</ul>";
Run Code Online (Sandbox Code Playgroud)
这个代码......
foreach $value(@array){
print "$value\n";
}
Run Code Online (Sandbox Code Playgroud)
...导致此输出:
hello
there
everyone
Run Code Online (Sandbox Code Playgroud) 我需要使用正则表达式来捕获href的内容.例如,当我将规则应用于href ="www.google.com"时,我想获得www.google.com.另外,我想忽略所有只有#值的href.
现在,我正在玩一段时间,我想出了这个:
href=(?:\"|\')((?:[^#]|.#.|.#|#.)+)(?:\"|\')
Run Code Online (Sandbox Code Playgroud)
当我在http://www.rubular.com/中尝试它时,它就像一个魅力,但我需要在PHP中使用它与preg_replace_callback,并且我没有得到预期的结果(用于在PHP中测试它,我正在使用这个网站:http://www.pagecolumn.com/tool/pregtest.htm).
我的错在哪里?
我有一个长xml文件,其中包含很多次字符串
<div type="something">
Run Code Online (Sandbox Code Playgroud)
我只需要向那些字符串添加文本"id ="NUMBER",其中NUMBER是一个从1开始并递增1的值.我的输出应该是
<div id="1" type="something">
<div id="2" type="something">
<div id="3" type="something">
...
Run Code Online (Sandbox Code Playgroud)
我最好使用Perl; 谁能帮我?
谢谢你,Stefania
我试过这个:
use strict;
use warnings;
my $str = "<div id=\"";
my $i = 0;
$str =~ s/<div id=\"/'<div id="'.++$i/ eg;
print "$str";
Run Code Online (Sandbox Code Playgroud)