Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式-冒号之间的文本_Regex - Fatal编程技术网

Regex 正则表达式-冒号之间的文本

Regex 正则表达式-冒号之间的文本,regex,Regex,我有一个这样的模式 <h1> 5/2009 <br/> Question: This is the question </h1> 5/2009 问题:这就是问题所在 我喜欢在之后取第一部分,或者总是在冒号前面取字符串: -->解决方案应该是“问题” 注意:这个词会变-有时是它的问题,有时可能是个大问题 我尝试了(.{0,50}):(.{0,50}),但这返回了很多(也是日期) 我没有受过正则表达式的训练,有人能帮我吗 非常感谢。试试这个: <br

我有一个这样的模式

<h1>
5/2009
<br/>
Question: This is the question
</h1>

5/2009

问题:这就是问题所在
我喜欢在

之后取第一部分,或者总是在冒号前面取字符串

-->解决方案应该是“问题”

注意:这个词会变-有时是它的问题,有时可能是个大问题

我尝试了
(.{0,50}):(.{0,50})
,但这返回了很多(也是日期)

我没有受过正则表达式的训练,有人能帮我吗

非常感谢。

试试这个:

<br/>([^:]+):

([^:]+):
我相信这会奏效:

<h1>.*?<br />([^:]+):(.*?)</h1>
*?
([^:]+):(*?)
想想你的意思,并将其翻译成正则表达式语言。正如Gumbo所指出的,您应该使用
[^:][/code>而不是
;这是因为您要查找的字符组不是冒号(
[^:]
),而不是介于冒号之间的任何字符组(

当你发现自己在正则表达式中使用了一个量词时,停下来问问自己你是否真的是指“任何字符”,或者你是否可以用字符类来更清楚地表达你的意思(并得到更准确的结果)

(非贪婪量词(
*?
)也可以在这种情况下获得正确的匹配,但字符类仍然可以更清楚地表达人类读者的意图,并通过避免机器读者过度回溯来提高效率。)


[1] 当然,任何字符都可以,根据您使用的正则表达式实现的不同,换行符可能是例外。

我的大脑的地板编码。真的感谢所有帮助过你的人

也许任何人都可以再次尝试帮助我,这对我很重要:S

<ul>
<li>
07.05.2009:
<a href="#1">Test 1</a>
</li>
<li>
05.01.2009:
<a href="#2">Test 2</a>
</li>
</ul>
  • 07.05.2009:
  • 05.01.2009:
这次我喜欢读第二部分。最好的办法是,如果我能在一个正则表达式中把两者分开

所以:1。07.05.2009
2.测试1

是。首先,使用HTML解析器提取
元素的内容,然后应用此正则表达式。可能我错了,但是
*?
中的
的需要是什么?
*
并不意味着任何字符的出现次数为零或更多?是的,但是它也会匹配

,如果h1标记中有多个

,或者您要应用正则表达式的字符串中有多个h1标记,则会出现问题。这个使前面的量词变为惰性,确保其余量词在尽可能早的位置匹配。?表示非贪婪(即尽可能少地匹配-默认为尽可能多地匹配)。如果不使用,并且页面包含两个标签,它将从第一个标签和最后一个标签中获取。谢谢大家。贪婪是一件棘手的事情。谷歌每天都给我这个,我通过在这里闲逛来学习一些关于regex的知识!!!但是我怎样才能理解第一部分呢?使用asp.net和c#?我尝试使用字符串RegexGeschaeftstyp=@“*?
([^:]+):(.*?”;MatchCollection RegexGeschaeftstypMatches=Regex.Matches(strSource,RegexGeschaeftstyp);foreach(RegexGeschaeftstypMatches中的Match match1){Response.Write(“在“+match1.Index+”
”)位置找到“+match1.ToString()+”);}这个辅助问题现在是一个单独的问题:请不要将问题作为答案发布。如果有人给了你帮助,让你成为你的英雄,按照惯例,选择他们的答案-点击答案下方的勾号,回答者将获得15分,而你自己将获得2分和一枚徽章。