目前我有一个输入框,可以检测URL并解析数据.
所以现在,我正在使用:
var urlR = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)
(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/;
var url= content.match(urlR);
Run Code Online (Sandbox Code Playgroud)
问题是,当我输入一个URL时www.google.com
,它不起作用.当我进入时http://www.google.com
,它正在工作.
我的正则表达式不是很流利.谁能帮我?
我有以下代码,它查看一个目录中的文件,并将包含某个字符串的文件复制到另一个目录中,但我尝试使用正则表达式,因为字符串可以是大写和小写,也可以是两者的混合.
在我尝试使用RegEx之前,这是有效的代码
import os
import re
import shutil
def test():
os.chdir("C:/Users/David/Desktop/Test/MyFiles")
files = os.listdir(".")
os.mkdir("C:/Users/David/Desktop/Test/MyFiles2")
for x in (files):
inputFile = open((x), "r")
content = inputFile.read()
inputFile.close()
if ("Hello World" in content)
shutil.copy(x, "C:/Users/David/Desktop/Test/MyFiles2")
Run Code Online (Sandbox Code Playgroud)
当我尝试使用RegEx时,这是我的代码
import os
import re
import shutil
def test2():
os.chdir("C:/Users/David/Desktop/Test/MyFiles")
files = os.listdir(".")
os.mkdir("C:/Users/David/Desktop/Test/MyFiles2")
regex_txt = "facebook.com"
for x in (files):
inputFile = open((x), "r")
content = inputFile.read()
inputFile.close()
regex = re.compile(regex_txt, re.IGNORECASE)
Run Code Online (Sandbox Code Playgroud)
我猜我需要一行代码
if regex = re.compile(regex_txt, re.IGNORECASE) == True
Run Code Online (Sandbox Code Playgroud)
但我似乎无法得到任何工作,如果有人能指出我正确的方向,将不胜感激.
如果我有很多匹配,例如在多行模式下,我想用匹配的一部分替换它们以及增量的计数器号.
我想知道任何正则表达式的味道是否有这样的变量.我找不到一个,但我似乎记得那样存在......
我不是在谈论可以使用回调替换的脚本语言.这是关于能够在RegexBuddy,sublime text,gskinner.com/RegExr等工具中实现这一点,就像你可以用\ 1或$ 1引用捕获的子串一样.
我有一个脚本可以运行到我的文本中并搜索并替换我在数据库中编写的所有句子.
剧本:
with open('C:/Users/User/Desktop/Portuguesetranslator.txt') as f:
for l in f:
s = l.split('*')
editor.replace(s[0],s[1])
Run Code Online (Sandbox Code Playgroud)
和数据库示例:
Event*Evento*
result*resultado*
Run Code Online (Sandbox Code Playgroud)
等等...
现在发生的事情是我需要在那个剧本中使用"全字",因为我发现自己遇到了问题.
例如,使用Result
和Event
,因为当我替换Resultado
和时Evento
,我再次在文本中运行脚本,脚本再次替换Resultado
和Evento
.
后,我运行脚本的结果保持这样的Resultadoado
和Eventoo
.
只是让你们知道..它不仅仅针对事件和结果,还有超过1000多个句子我已经为搜索设置并替换为工作..
我不需要简单的搜索和替换两个单词..因为我将一遍又一遍地为不同的句子编辑数据库..
众所周知,这\b
意味着正则表达式中的单词边界.但是re
python中的以下模块代码不起作用:
>>> p=re.compile('\baaa\b')
>>> p.findall("aaa vvv")
[]
Run Code Online (Sandbox Code Playgroud)
我认为返回的结果findall
应该是["aaa"]
,但它没有找到任何东西.怎么了?
使用 str.contains 时是否有等价物?
以下代码因“Sa”而错误地将“Said Business School”列在类别中。如果我可以创建一个词界,它就会解决这个问题。在搞砸之后放一个空格。我正在使用熊猫,这是 dfs。我知道我可以使用正则表达式,但是很好奇我是否可以使用字符串来使它更快
gprivate_n = ('Co|Inc|Llc|Group|Ltd|Corp|Plc|Sa |Insurance|Ag|As|Media|&|Corporation')
df.loc[df[df.Name.str.contains('{0}'.format(gprivate_n))].index, "Private"] = 1
Run Code Online (Sandbox Code Playgroud) 我试图用另一个词替换一个词的出现:
word_list = { "ugh" : "disappointed"}
tmp = ['laughing ugh']
for index, data in enumerate(tmp):
for key, value in word_list.iteritems():
if key in data:
tmp[index]=data.replace(key, word_list[key])
print tmp
Run Code Online (Sandbox Code Playgroud)
而这有效...... ugh
in的出现laughing
也在输出中被替换:ladisappointeding disappointed.
如何避免这种情况,以便输出是laughing disappointed
?
我有一个看起来像的字符串:
phrase = '5 hampshire road bradford on avon avon dinas powys powys north somerset hampshire avon'
Run Code Online (Sandbox Code Playgroud)
我想返回一个删除了某些单词的新字符串,前提是它们前面没有某些其他单词。
例如,我要删除的词是:
c_out = ["avon", "powys", "somerset","hampshire"]
Run Code Online (Sandbox Code Playgroud)
只有当他们不遵循:
c_except = ["on\s","dinas\s"]
Run Code Online (Sandbox Code Playgroud)
注意: 内可能有多个单词实例, 内可能有多个单词c_out
实例c_except
。
我个人尝试过'on\s'
:
phrase = '5 hampshire road bradford on avon avon dinas powys powys north somerset hampshire avon'
regexp1 = re.compile(r'(?<!on\s)(avon|powys|somerset|hampshire)')
print("1st Result: ", regexp1.sub('', phrase))
1st Result: '5 road bradford on avon avon dinas north'
Run Code Online (Sandbox Code Playgroud)
这正确地忽略了第一个'avon'
,因为它前面是'on\s'
,它正确地删除了第三个'avon'
, …
为什么以下Python语句会返回None
?
>>> re.match('\b\w+\b', 'foo')
>>>
Run Code Online (Sandbox Code Playgroud)
据我了解,这应该与单词相符foo
.第一个\b
应匹配单词的开头foo
,\w+
应匹配单词foo
,最后\b
应匹配单词的结尾foo
.我的理解有什么问题?
为什么字边界不起作用?
阅读这个网站,我知道一个单词边界是这样的:
有三种不同的职位符合词边界:
a
下面的字符串似乎符合上面列出的至少一个位置.
a = 'Builders Club The Ohio State'
re.sub('\bThe\b', '', a, flags=re.IGNORECASE)
Run Code Online (Sandbox Code Playgroud)
输出."The"没有变化.
'Builders Club The Ohio State'
Run Code Online (Sandbox Code Playgroud)
为什么字边界不起作用?
当我在'The'模式之前和之后放置空格时,正则表达式似乎有效.
a = 'Builders Club The Ohio State'
re.sub(' The ', ' ', a, flags=re.IGNORECASE)
Run Code Online (Sandbox Code Playgroud)
输出:
'Builders Club Ohio State'
Run Code Online (Sandbox Code Playgroud) 例如,如何匹配_ab
句子中的第二个_ab_ab is a test
?我试图\>
匹配词尾,但不适用于Python 2.7.注意:我匹配的不是字符串的结尾,而是单个单词的结尾.
其他帖子中有隐含的答案.但我认为应该提倡对这个问题作出简单而直接的回答.所以我在尝试以下帖子后没有找到直接和简洁的解决方案就问过它.
我正在处理一系列我想搜索的文本,只找到4个字母的单词.它有效,除了它还可以找到4个以上的字母单词.
import re
test ="hello, how are you doing tonight?"
total = len(re.findall(r'[a-zA-Z]{3}', text))
print (total)
Run Code Online (Sandbox Code Playgroud)
它找到15,虽然我不确定它是如何发现的那么多.我以为我可能不得不使用\ b来选择单词的开头和结尾,但这似乎对我没用.