相关疑难解决方法(0)

除了XHTML自包含标记之外,RegEx匹配开放标记

我需要匹配所有这些开始标记:

<p>
<a href="foo">
Run Code Online (Sandbox Code Playgroud)

但不是这些:

<br />
<hr class="foo" />
Run Code Online (Sandbox Code Playgroud)

我想出了这个,并希望确保我做对了.我只抓住了a-z.

<([a-z]+) *[^/]*?>
Run Code Online (Sandbox Code Playgroud)

我相信它说:

  • 找一个小于,然后
  • 然后,查找(并捕获)az一次或多次
  • 然后找到零个或多个空格
  • 找到任何字符零次或多次,贪婪/,然后
  • 找到一个大于

我有这个权利吗?更重要的是,你怎么看?

html regex xhtml

1323
推荐指数
36
解决办法
270万
查看次数

在C#中解析html的最佳方法是什么?

我正在寻找一个库/方法来解析一个html文件,该文件具有比通用xml解析库更多的html特定功能.

.net html c# parsing html-content-extraction

66
推荐指数
7
解决办法
43万
查看次数

C#Regex更改每个匹配的替换字符串

我有一个像这样的字符串:

string s = "<p>Hello world, hello world</p>";
string[] terms = new string[] {"hello", "world"};
Run Code Online (Sandbox Code Playgroud)

我想对此字符串进行替换,以便匹配每个单词(不区分大小写),并替换为带编号的索引span标记,如下所示:

<p>
    <span id="m_1">Hello</span> 
    <span id="m_2">world</span>, 
    <span id="m_3">hello</span> 
    <span id="m_4">world</span>!
</p>
Run Code Online (Sandbox Code Playgroud)

我试着这样做.

int match = 1;
Regex.Replace(s,
    String.Join("|", String.Join("|", terms.OrderByDescending(s => s.Length)
        .Select(Regex.Escape))),
    String.Format("<span id=\"m_{0}\">$&</span>", match++),
    RegexOptions.IgnoreCase);
Run Code Online (Sandbox Code Playgroud)

输出是这样的:

<p>
    <span id="m_1">Hello</span> 
    <span id="m_1">world</span>, 
    <span id="m_1">hello</span> 
    <span id="m_1">world</span>!
</p>
Run Code Online (Sandbox Code Playgroud)

所有id都相同(m_1),因为正则表达式不评估每个匹配的匹配++,而是整个正则表达式的匹配.我该如何解决这个问题?

c# regex

5
推荐指数
1
解决办法
292
查看次数

RegEx:找出我的比赛是否在<span>中

遇到这个问题.

尝试为自定义文件执行一些基本语法突出显示.需要知道元素是否在标记内.

一些样本数据

<span class="class1"> 
    Some Text <span class="class2">Some More Text</span>
    TEST
    <span>Text</span>
</span>
TEST
Run Code Online (Sandbox Code Playgroud)

我想在这里做的是找到没有嵌套在span标签中的TEST的出现.

第一个class1标签不应该匹配,因为它嵌套在里面,第二个标签应该匹配,因为它没有嵌套在任何span标签中.

第一个测试应该显示它嵌套在span标签中,第二个测试应该显示它不是.

我知道正则表达式并不是用来解析html,但对于我的小情况,我认为使用正则表达式是最简单的,因为我不知道另一种方法来做我正在寻找的东西.我不反对使用XPath,如果它可以快速解决这个问题.

在我的代码中,我想要的是一个像这样的方法

bool InsideSpanTag(string source, int index);
Run Code Online (Sandbox Code Playgroud)

如果索引位于字符串源中的某些span标记之间,则返回true;如果不是,则返回false.

编辑:没关系,我只计算索引左侧的开始和结束跨度标签,看看开口跨度标签的数量是否大于结束标签.有点快,又脏,但这真的是我所需要的.

c# regex

1
推荐指数
1
解决办法
352
查看次数

试图在C#中使用正则表达式获取整个&lt;div&gt;

我正在尝试在C#中刮整个div元素...

我已经尝试过了, div class="txt-block"\s*(.+?)(\r\n?|\n)\s*"但是它并没有刮擦整个:(有什么想法吗?

    <div class="txt-block" itemprop="creator" itemscope itemtype="http://schema.org/Person"> 
    <h4 class="inline">Writers:</h4>
    <a href="/name/nm1318843/?ref_=tt_ov_wr" itemprop='url'><span class="itemprop"    itemprop="name">Mark Fergus</span></a>               (screenplay), 
    <a href="/name/nm1319757/?ref_=tt_ov_wr" itemprop='url'><span class="itemprop"         
    itemprop="name">Hawk Ostby</span></a>               (screenplay), <a href="fullcredits?ref_=tt_ov_wr#writers" >6 more credits</a>&nbsp;&raquo;
</div> 
Run Code Online (Sandbox Code Playgroud)

html c# regex

0
推荐指数
1
解决办法
1744
查看次数

标签 统计

c# ×4

regex ×4

html ×3

.net ×1

html-content-extraction ×1

parsing ×1

xhtml ×1