我正在使用一个使用正则表达式从字符串中删除所有html标记的教程(Ruby):
product.description.gsub(/<.*?>/,'').
我不知道怎么解释?.这是否意味着:"至少有一个以前的"?在那种情况下,会不会/<.+>/更充足?
我有一个这样的短语
电脑,艾迪去了市场.
我想得到Eddie这个词而忽略所有其他的词,因为其他词是不变的,而Eddie这个词可能是任何东西.
我如何在正则表达式中执行此操作?
对不起,我正在使用.NET正则表达式:)
我想尝试匹配输入
<foo>
<bar>
#####<foo>
#####<bar>
Run Code Online (Sandbox Code Playgroud)
我试过#{5}?<\w+>,但它不匹配<foo>和<bar>.
这种模式有什么问题,如何修复?
我已经使用perl十年了.但最近我对使用它感到困惑.*?正则表达式.
它似乎与最小字符数不匹配.有时会产生不同的结果.
例如,对于这个字符串:aaaaaaaaaaaaaaaaaaaaaaammmmmmmmmmmbaaaaaaaaaaaaaaaaaaaaaa和pattern:a.*?b它匹配两组中的完整输入字符串.根据定义,它应该与最后的"ab"相匹配.
任何人都可以一步一步解释我为什么正则表达式失败了:
<.++>
Run Code Online (Sandbox Code Playgroud)
用这个字符串来比较: <em>
使用惰性或贪婪量词找到相同的字符串,但在这种情况下涉及哪些步骤?
我使用Java正则表达式风格.
我正在为一个Java程序创建一个XMLParser(我知道那里有很好的XMLParser,但我只想这样做).
我有一个名为getAttributeValue(String xmlElement,String attribute)的方法,并使用正则表达式查找具有属性名称加上的字符序列
="any characters that aren't a double quote"
Run Code Online (Sandbox Code Playgroud)
然后我可以解析引号的内容.不幸的是,我在使用正则表达式模式时遇到了麻烦.如果我使用:
Pattern p = Pattern.compile(attribute + "=\"(.)+\"");
Run Code Online (Sandbox Code Playgroud)
然后我得到一个以我的属性名称开头的字符串,但因为有大量的属性和值,并且最后一个的值具有双引号,我得到我想要的字符串以及所有其他属性名称和值,如下所示:
attributeOne="contents" attributeTwo="contents2" attributeThree="contents3"
Run Code Online (Sandbox Code Playgroud)
所以我认为我可以有一个正则表达式,而不是"." 任何字符符号,都有"任何字符,但不是双引号".我试过了:
Pattern p = Pattern.compile(attribute + "=\"(.&&[^\"])+\"");
Pattern p = Pattern.compile(attribute + "=\"(.&&(^\"))+\"");
Pattern p = Pattern.compile(attribute + "=\"([.&&[^\"]]+)\"");
Run Code Online (Sandbox Code Playgroud)
但它们都不起作用.如有任何建议和意见,我将不胜感激.
谢谢.
我是regex和Python的urllib的新手.我浏览了一个关于网络报废的在线教程,它有以下代码.在研究正则表达式后,在我看来,我可以在我的正则表达式中使用(.+)而不是(.+?),但是我错了.我最终打印的方式比我想要的更多HTML代码.我以为我正在掌握正则表达式,但现在我很困惑.请向我解释这两个表达式之间的区别以及为什么它会抓取这么多html.谢谢!
PS.这是一个星巴克股票报价刮刀.
import urllib
import re
url = urllib.urlopen("http://finance.yahoo.com/q?s=SBUX")
htmltext = url.read()
regex = re.compile('<span id="yfs_l84_sbux">(.+?)</span>')
found = re.findall(regex, htmltext)
Run Code Online (Sandbox Code Playgroud)
打印发现
我试图捕获"Rio Grande Do Leste":
...
<h1>Rio Grande Do Leste<br />
...
Run Code Online (Sandbox Code Playgroud)
运用
var myregexp = /<h1>()<br/;
var nomeAldeiaDoAtaque = myregexp.exec(document);
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
更新:
还有2个问题:
1)搜索(文档)没有产生任何结果,但将其更改为(document.body.innerHTML)工作.这是为什么?
2)我不得不将其更改为:myregexp.exec(document.body.innerHTML)[1] ; 得到我想要的东西,否则它会给我一些结果,包括<h1>.这是为什么?
3)(已回答)为什么我需要使用".*"?我认为它会在()之间收集任何东西?
我试过以下表达式.
(http:\/\/.*?)['\"\< \>]
(http:\/\/[-a-zA-Z0-9+&@#\/%?=~_|!:,.;\"]*[-a-zA-Z0-9+&@#\/%=~_|\"])
Run Code Online (Sandbox Code Playgroud)
第一个表现不错但总是给出匹配网址的最后一个额外字符.
例如:
http://domain.com/path.html"
http://domain.com/path.html<
Run Code Online (Sandbox Code Playgroud)
注意
" <
Run Code Online (Sandbox Code Playgroud)
我不希望他们使用URL.
我正在使用 python3 re 模块 - 我发现a*a匹配aaa. 我认为正则表达式默认是贪婪的(除非我们用 覆盖它来懒惰?) - 因此,a*将匹配整个字符串,并且a模式中的尾随将失败。然而,它匹配:
$ import re
$ re.match(r'a*a', 'aaa')
<_sre.SRE_Match object; span=(0, 3), match='aaa'>
Run Code Online (Sandbox Code Playgroud)
这不应该失败吗?
regex ×10
java ×3
regex-greedy ×2
html ×1
javascript ×1
perl ×1
python ×1
python-3.x ×1
urllib ×1