当前所在位置: 首页 > 域名交易

网站改了静态设置,后台打不开了?swift中,正则表达式没有办法给分组捕获命名吗?

2021-10-11 本站作者 【 字体:

网站改版的注意事项

  当您的网站进行改版(如更换域名或大量链接短期内发生永久性跳转),为保证新资源及时被收录、索引量和展现效果不出现大幅波动,我们建议步骤如下:

  首先使用301跳转将所有页面进行重定向,系统发现后会逐步进行新旧替换;再来站长平台使用网站改版工具通知百度您网站新旧改版内容(新旧网站均需验证),能加速系统对301跳转的处理。

  提交的信息会先进行系统校验,校验周期一般为一周左右。校验通过后,更改生效需要一段时间,期间可以通过以下一些方法来查看该过程是否正常运行:

  关注新网站的抓取异常情况,短期内适当提升抓取压力帮助新网站更快抓取关注新网站的索引量波动,关注网站改版工具显示的已替换链接条数同时对旧网站的域还需保留一段时间,直到新网站在百度索引和展现效果佳如何向百度提交网站改版规则

  1)告知域名更换

  若只是更换域名(即改版前后的url长相除站点不同外,其他均一致),首先确保新旧网站均已验证所有权,然后到网站改版工具添加新改版内容,选择“告知域名更换”,填写旧域名和新域名(如果验证了主域,可以填写任意子站)。提交后注意关注系统反馈的校验信息,校验周期一般为一周左右。

  2)提交正则规则

  您如果正在进行比更换域名更复杂的改版,比如目录级别大量链接进行跳转,可以通过正则规则告知百度。到网站改版工具添加新改版内容,选择“提交正则规则”,输入旧网址规则和新网址规则,以及两组新旧url样例帮助校验规则;填完后点击提交。提交后注意关注系统反馈的校验信息,校验周期一般为一周左右。

  注:近期网站改版工具采用新的更通用PCRE规范正则表达式,使用原表达方式的已提交的改版规则不受影响。

  全力以赴地进入数据集是从事数据科学工作的任何人的使命之一。通常,这意味着要进行数字运算,但是当我们的数据集主要基于文本时,我们该怎么办?我们可以使用正则表达式。在本教程中,我们将仔细研究如何在Python中使用正则表达式(regex)。

  3)提交新旧url对

  您如果发现以上两种方式都不能描述您的网站改版情况,可通过直接罗列改版新旧url对,告知百度您的改版内容。到网站改版工具添加新改版内容,选择“提交新旧url对”,将新旧url对放在txt文本文件,上传提交。提交后注意关注系统反馈的校验信息,校验周期一般为一周左右。

  如何编写网站改版正则规则

  正则表达式(regex)本质上是文本模式,可用于自动搜索和替换文本字符串中的元素。这可以使清理和使用基于文本的数据集变得更加容易,从而省去了手动搜索大量文本的麻烦。

  规则由2部分组成:旧网址的正则表达式、新网址的正则表达式。

  正则标准说明:支持PCRE规范的表达式。

  以下举例说明:

  正则表达式可以在多种编程语言中使用,并且已经存在很长时间了!

  改版前url:example.com/bbs123/?a=2&b=137

  改版后url:bbs123.yoursite.com/thread-137-2.html针对这一类长相的url改版

  不过,在本教程中,我们将学习Python中的正则表达式,因此需要基本熟悉关键的Python概念,例如if-else语句,while和for循环等。在本教程结束时,您将熟悉Python regex的工作原理,并能够使用Python regex模块中的基本模式和功能re来分析文本字符串。您还将获得有关正则表达式如何与熊猫配合使用以处理大型文本语料库的介绍。

网站改了静态设置,后台打不开了?swift中,正则表达式没有办法给分组捕获命名吗?(图1)



  让我们深入研究有关每个人最不喜欢的电子邮件类型的一些数据:垃圾邮件和欺诈。

  我们的任务:分析垃圾邮件

  首先使用正则描述改版前旧url规则:^example\.com/([a-z0-9]+)/\?a=([0-9]+)&b=([0-9]+)$再用字符串和捕获引用描述改版后新url规则: \1.yoursite.com/thread-\3-\2.html注:其中\为转义字符,其后可以跟随数字0-9以表示一个对捕获字符串的引用,或者跟随另一个以表示一个字符’’,其余字符皆不可以跟随在一个单独的\之后。其余字符都表示他们自身。

  提交以上正则规则后,如改版前url

  在本教程中,我们将使用Kaggle的欺诈电子邮件语料库。它包含1998年至2007年之间发送的数千种网络钓鱼电子邮件。它们非常有趣,易于阅读。

  您可以在这里找到完整的语料库。但是,我们将从使用一些电子邮件学习基本的正则表达式命令开始。如果需要,您也可以使用我们的测试文件,也可以在完整的语料库中尝试使用。

  example.com/bbs123/?a=2&b=137

  介绍Python的Regex模块

  会匹配这条规则,并产生如下的捕获对应关系

  bbs123 => \1

网站改了静态设置,后台打不开了?swift中,正则表达式没有办法给分组捕获命名吗?(图2)



  首先,我们将通过打开测试文件,将其设置为只读并读取来准备数据集。我们还将其分配给变量fh(用于“文件句柄”)。

  请注意,我们在目录路径之前加r。此技术将字符串转换为原始字符串,这有助于避免某些机器读取字符的方式引起的冲突,例如Windows上目录路径中的反斜杠。

  2 => \2

  137 => \3

  进而得到最终的改版后url长相为

  现在,假设我们要找出电子邮件的来源。我们可以自己尝试使用原始Python:

网站改了静态设置,后台打不开了?swift中,正则表达式没有办法给分组捕获命名吗?(图3)


  bbs123.yoursite.com/thread-137-2.html


  但这并没有给我们确切的需求。如果您看一下我们的测试文件,我们可以找出原因并修复它,但是,让我们使用Python的re模块并使用正则表达式来做吧!

  请注意如下的url将不在本规则覆盖范围内:

  example.com/BBS123/?a=2&b=137

  我们将从导入Python的re模块开始。然后,我们将使用一个名为的函数re.findall(),该函数返回在正在查看的字符串中定义的模式的所有实例的列表。

  原因:规则配置的第一个捕获中指定可通配[a-z0-9]但未包括大写字母example.com/bbs123/?a=&b=137

  原因:规则配置的第二个捕获指定+匹配至少要有一个字符example.com/bbs123/?a=2&b=137&c=45

  外观如下:

网站改了静态设置,后台打不开了?swift中,正则表达式没有办法给分组捕获命名吗?(图4)


  原因:规则最后指定$表示断言url应该到此结束,否则不匹配附PCRE规则常用字符,更多可到标准库中进行了解。


  这与原始Python的长度基本相同,但这是因为这是一个非常简单的示例。您尝试做的越多,Python正则表达式就可以为您节省更多的精力。

  在继续之前,让我们仔细看看re.findall()。此函数采用形式为的两个参数re.findall(pattern, string)。在这里,pattern代表我们要查找的子字符串,并string代表我们要在其中查找的主字符串。主字符串可以包含多行。在这种情况下,我们让它fh使用选定的电子邮件来搜索所有文件。

  该.*是一个字符串模式的简写。正则表达式通过使用这些速记模式来查找文本中的特定模式而起作用,因此让我们看一下其他一些常见示例:

  ^:表示字符串开始,即在此之前不能再有任何字符$:表示字符串结束,即在此之后不能再有任何字符?:表示之前的元素可以出现0次或1次

  *:表示之前的元素可以出现0次或多次

  常见的Python正则表达式模式

  我们re.findall()上面使用的模式包含一个完整拼写的字符串"From:"。当我们确切地知道我们要查找的内容(精确到实际字母以及它们是否为大写或小写)时,这很有用。如果我们不知道我们想要的字符串的确切格式,我们将会迷路。幸运的是,正则表达式具有解决此情况的基本模式。让我们看看在本教程中使用的那些:

  1)w匹配字母数字字符,表示az,AZ和0-9。它还与下划线_和破折号-相匹配。

  2)d 匹配数字,表示0-9。

  3)s 匹配空白字符,包括制表符,换行符,回车符和空格字符。

  +:表示之前的元素可以出现1次或多次

  4)S 匹配非空格字符。

  {数字}:表示之前的元素必须出现数字次

  5).匹配除换行符外的任何字符n。

  掌握了这些正则表达式模式后,您将在继续进行解释的同时快速理解上面的代码。

  {数字,}:表示之前的元素需要出现至少数字次{数字1,数字1}:表示之前的元素出现次数不少于在数字1且不大于数字2[一些字符]:表示一个在一些字符内的字符,一些字符部分可以用-进行简记,例如[abcde]等同于[a-e]

  .:表示一个任意字符

使用正则表达式模式

  现在,我们可以.*在re.findall("From:.*", text)上面的行中解释的用法。让我们.先来看:

  \:转义字符,当上面有特殊含义的字符以及\本身需要表示其字面值而非特殊含义时,可以用特殊字符表示这个特殊字符本身,例如?表示一个?而非\出现0次或一次。转义字符还可以和一些非特殊字符使用,表示一个特殊含义,见后续的描述\d:表示一个数字[0-9]

  \w:表示一个单词[a-zA-Z0-9_]

网站改了静态设置,后台打不开了?swift中,正则表达式没有办法给分组捕获命名吗?(图5)


  (子模式):一般?和*等计数字符只对前一个元素生效,当需要对一个子模式生效时,需要加上括号。同时,括号内子模式所匹配的字符串,会作为捕获存在,后续可以引用,计数方式为“从左至右每一个加括号的子模式依次被编号为捕获1、2、3、4等”。整个规则本身匹配部分也是一个捕获,记为0号捕获|:表示之前的子模式和之后的子模式至少有一个匹配,例如a(bc|de)f可以匹配adef和abcf


  通过在.旁边添加一个From:,我们可以在其旁边查找另一个字符。因为.查找除以外的任何字符n,所以它捕获了我们看不到的空格字符。我们可以尝试更多的点来验证这一点。

网站改了静态设置,后台打不开了?swift中,正则表达式没有办法给分组捕获命名吗?(图6)



  看起来加点确实为我们获得了线的其余部分。但是,这很繁琐,而且我们不知道要添加多少点。这是星号符号*出现的位置。

  *匹配模式左侧的零个或多个实例。这意味着它将寻找重复模式。当我们寻找重复的模式时,我们说搜索是“贪婪的”。如果我们不寻找重复的模式,则可以将搜索称为“非贪婪”或“懒惰”。

  让我们构建一个贪婪的搜索.用*。

网站改了静态设置,后台打不开了?swift中,正则表达式没有办法给分组捕获命名吗?(图7)



  因为*匹配在其左侧指示的模式的零个或多个实例,并且.位于此处的左侧,所以我们能够获取From:字段中的所有字符,直到行尾。这将用精美简洁的代码打印出整行。

  我们甚至可以更进一步,仅隔离名称。让我们使用它re.findall()来返回包含模式的行列表,"From:.*"就像之前一样。match为了整洁,我们将其分配给变量。接下来,我们将遍历列表。在每个循环中,我们将re.findall再次执行,匹配第一个引号以仅选择名称:

网站改了静态设置,后台打不开了?swift中,正则表达式没有办法给分组捕获命名吗?(图8)



  注意,我们在第一个引号旁边使用了反斜杠。反斜杠是一个特殊字符,用于转义其他特殊字符。例如,当我们想将引号用作字符串文字而不是特殊字符时,可以使用反斜杠将其转义,例如:"。如果我们不使用反斜杠转义上面的模式,它将变为"".*"",Python解释器将其读取为两个空字符串之间的句点和星号。它将产生错误并破坏脚本。因此,至关重要的是我们在这里用反斜杠将引号引起来。

  匹配第一个引号后,.*获取行中的所有字符,直到下一个引号也被转义为模式。这使我们得到的名称只是带引号的名称。该名称也打印在方括号中,因为re.findall返回的匹配项在列表中。

  如果我们想要电子邮件地址怎么办?

网站改了静态设置,后台打不开了?swift中,正则表达式没有办法给分组捕获命名吗?(图9)



  看起来很简单,不是吗?仅模式不同。让我们来看一看。

  这是我们仅匹配电子邮件地址的前部分的方式:

网站改了静态设置,后台打不开了?swift中,正则表达式没有办法给分组捕获命名吗?(图10)



  电子邮件总是包含一个@符号,因此我们从它开始。电子邮件中@符号前的部分可能包含字母数字字符,这w是必需的。但是,由于某些电子邮件包含句点或破折号,所以这还不够。我们添加S以查找非空白字符。但是,w\S只会得到两个字符。添加*以查找重复。因此,模式的前部如下所示:\w\S*@。

  现在查看@符号后面的模式:

网站改了静态设置,后台打不开了?swift中,正则表达式没有办法给分组捕获命名吗?(图11)



  域名通常包含字母数字字符,句点和短划线,因此a .可以。为了使它更贪婪,我们使用扩展了搜索范围*。这使我们可以匹配任何字符,直到行尾。

  如果我们仔细观察这条线,会发现每封电子邮件都封装在尖括号<和>中。我们的模式.*包括右括号>。让我们对其进行补救:

网站改了静态设置,后台打不开了?swift中,正则表达式没有办法给分组捕获命名吗?(图12)



  电子邮件地址以字母数字字符结尾,因此我们将模式设置为w。因此,在@符号后面有.*\w,这表示我们想要的模式是一组以字母数字字符结尾的任何类型的字符。不包括>。

  因此,我们的完整电子邮件地址格式如下所示:\w\S*@.*\w。

  !这需要花费很多时间。接下来,我们将介绍一些通用re功能,这些功能在开始重新组织语料库时将非常有用。

  常用的Python正则表达式函数

  re.findall()无疑是有用的,但它不是我们可以使用的唯一内置函数re:

  1)re.search()

  2)re.split()

  3)re.sub()

  在使用它们为我们的数据集添加一些顺序之前,让我们一一看一下。

  研究()

  While re.findall()匹配字符串中某个模式的所有实例并在列表中返回它们,re.search()匹配字符串中一个模式的第一个实例,并将其作为re匹配对象返回。

网站改了静态设置,后台打不开了?swift中,正则表达式没有办法给分组捕获命名吗?(图13)



  像一样re.findall(),re.search()也有两个参数。第一个是要匹配的模式,第二个是要在其中找到模式的字符串。在这里,我们将结果分配给match变量以保持整洁。

  由于re.search()返回re匹配对象,因此无法通过直接打印来显示名称和电子邮件地址。相反,我们必须首先对该group()函数应用该函数。我们已经在上面的代码中打印了这两种类型。如我们所见,group()将match对象转换为字符串。

  我们还可以看到,打印match显示的属性超出字符串本身,而打印match.group()仅显示字符串。

  re.split()

  假设我们需要一种快速的方法来获取电子邮件地址的域名。我们可以通过三个正则表达式操作来做到这一点,如下所示:

网站改了静态设置,后台打不开了?swift中,正则表达式没有办法给分组捕获命名吗?(图14)



  第一行很熟悉。我们返回一个字符串列表,每个字符串包含From:字段的内容,并将其分配给变量。接下来,我们遍历列表以查找电子邮件地址。同时,我们循环访问电子邮件地址,并使用该re模块的split()功能将每个地址切成两半,用@符号作为分隔符。最后,我们打印它。

  re.sub()

  另一个方便的re功能是re.sub()。就像函数名称所暗示的那样,它替换字符串的一部分。一个例子:

网站改了静态设置,后台打不开了?swift中,正则表达式没有办法给分组捕获命名吗?(图15)



  我们之前已经在第一行和第二行看到了任务。在第三行,我们re.sub()在上应用address,这是From:电子邮件标题中的完整字段。

  re.sub()需要三个参数。第一个是要替换的子字符串,第二个是我们要替换的字符串,第三个是主字符串本身。

  正则表达式与pandas

  现在,我们掌握了Python正则表达式的基础知识。但是通常对于数据任务,我们实际上并没有使用原始的Python,而是使用了pandas库。现在,将我们的正则表达式技能带入熊猫工作流程,将其提升到一个新的水平。

  如果您以前从未使用过熊猫,请不要担心。我们将逐步遍历代码,以免您迷路。但是,如果您想更详细地了解熊猫,请查看我们的熊猫教程或我们提供的有关numpy和熊猫的完全交互式课程。

  使用Python Regex和Pandas对电子邮件进行排序

  我们的语料库是一个包含数千封电子邮件的单个文本文件(不过,同样,在本教程中,我们使用的是一个只有两个电子邮件的较小文件,因为在整个语料库上打印正则表达式工作的结果会使这篇文章过长)。

  我们将使用正则表达式和熊猫将每封电子邮件的各个部分分类为适当的类别,以便可以更轻松地阅读或分析语料库。

  我们将每封电子邮件分为以下类别:

  1)sender_name

  2)sender_address

  3)recipient_address

  4)recipient_name

  5)date_sent

  6)subject

  7)email_body

  这些类别中的每一个都将成为我们的熊猫数据框(即我们的表格)中的一列。这将使我们更轻松地分别处理和分析每个列。

  我们将继续处理我们的小样本,但是值得重申的是,正则表达式使我们可以编写更简洁的代码。简洁的代码减少了我们的机器必须执行的操作数量,从而加快了我们的分析过程。使用我们的两封电子邮件的小文件,并没有太大的区别,但是,如果您尝试使用和不使用正则表达式来处理整个语料库,您将开始看到其优势!

  准备脚本

  首先,让我们导入所需的库,然后再次打开文件。

  除了re和之外pandas,我们email还将导入Python的软件包,这将有助于电子邮件的正文。仅使用正则表达式时,电子邮件的主体相当复杂。它甚至可能需要足够的清理才能保证有自己的教程。因此,我们将使用完善的email软件包来节省一些时间,让我们专注于学习正则表达式。

网站改了静态设置,后台打不开了?swift中,正则表达式没有办法给分组捕获命名吗?(图16)



  我们还创建了一个空列表emails,用于存储字典。每本词典将包含每封电子邮件的详细信息。

  现在,让我们开始应用正则表达式!

网站改了静态设置,后台打不开了?swift中,正则表达式没有办法给分组捕获命名吗?(图17)



  注意:为简洁起见,我们剪裁了上面的打印输出。如果您在自己的机器上打印此文件,它将显示其中包含的所有内容,contents而不是...像上面那样结束。

  我们使用re模块的split函数将整个文本块分割fh为单独的电子邮件列表,然后将其分配给变量contents。这很重要,因为我们希望通过使用for循环遍历列表来逐一处理电子邮件。但是,我们如何知道按字符串分割"From r"?

  我们之所以知道这一点,是因为在编写脚本之前我们已经查看了文件。我们不必细读其中的数千封电子邮件。只是前几个,看看数据的结构是什么样子。只要有可能,最好在开始使用代码之前先关注实际数据,因为您经常会发现诸如此类的有用功能。

  我们已经截取了原始文本文件的屏幕截图:

阅读全文
id_1广告位-300*300
相关推荐

简述域名解析的过程域名注册流程是什么?

简述域名解析的过程域名注册流程是什么?
你好,域名注册流程有以下步骤:1、首先在百度中搜索“域名注册”,可以看到很多网站...

请问如何申请域名?求域名转让的流程?

请问如何申请域名?求域名转让的流程?
感谢邀请,这也是三分最在行的事情之一。目前手头也有部分域名在手,当做投资了,目前...

[电脑技巧] 什么是IP地址、网关、DNS、子网掩码、MAC地址?godaddy平台域名转移好不好?转入流程是怎样的?

[电脑技巧] 什么是IP地址、网关、DNS、子网掩码、MAC地址?godaddy平台域名转移好不好?转入流程是怎样的?
我觉得狗爹域名转移还是蛮好的,比国内的注册商有很多优势。比如国内多数的注册商对于...

从计算机域名到IP地址翻译的过程称为什么。域名是什么意思啊?

从计算机域名到IP地址翻译的过程称为什么。域名是什么意思啊?
域名,简称域名、网域,是由一串用点分隔的名字组成的Internet上某一台计算机...

目前比较快的DNS,有几个?域名地址、IP地址、物理地址的作用和相互之间的关系是什么?

目前比较快的DNS,有几个?域名地址、IP地址、物理地址的作用和相互之间的关系是什么?
通过一些解释帮你进行认识,希望能帮到你 域名地址Domain name addr...

域名怎么表示?一级域名和二级域名的区别是什么?作用怎样?

域名怎么表示?一级域名和二级域名的区别是什么?作用怎样?
域名地址也是HTTP是超文本转移协议,是客户端浏览器或其他程序与Web服务器之间...

无线中DNS改为114.114.114.114真的能提高网速吗?如何提高网速?为什么域名要分中文的和英文的?

无线中DNS改为114.114.114.114真的能提高网速吗?如何提高网速?为什么域名要分中文的和英文的?
DNS改为114.114.114.114不一定能提高网速,把DNS设为“114....

域名注册商转移步骤是怎样的?如何域名注册转移?路由器虚拟服务器dmz主机图文教程,设置转发局域网ip端口映射

域名注册商转移步骤是怎样的?如何域名注册转移?路由器虚拟服务器dmz主机图文教程,设置转发局域网ip端口映射
域名注册商转移步骤是怎样的?如何域名注册转移?很多小伙伴们可能在多个域名注册平台...

域名解析、IP指向、URL转发.所指的是什么意思?如何作域名URL转发?

域名解析、IP指向、URL转发.所指的是什么意思?如何作域名URL转发?
我们知道域名是为了方便记忆而专门建立的一套地址转换系统,要访问一台互联网上的服务...

国内有哪些比较快速稳定的缩短网址的服务呢?thinkphp怎么缩短网址

国内有哪些比较快速稳定的缩短网址的服务呢?thinkphp怎么缩短网址
推荐使用 缩吧短址服务,主页地址: http://s8.hk你看下这里就会明白了...