Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.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
Javascript 为特定数据集设计正则表达式_Javascript_Python_Regex_Python 3.x_Regex Group - Fatal编程技术网

Javascript 为特定数据集设计正则表达式

Javascript 为特定数据集设计正则表达式,javascript,python,regex,python-3.x,regex-group,Javascript,Python,Regex,Python 3.x,Regex Group,e、 g 15011721827:52352403:印度群岛联盟的战争 52352403是文章的ID。这篇文章的标题是《印度群岛联盟之战》 我想使用Javascript从给定的文本文件中提取ID和标题对,您只需使用split()在匹配两点时分割字符串即可: var text=“1234567890:12312312:Lorem ipsum door sit amet”; var splitted=text.split(“:”); console.log(“id:+splitted[1]); c

e、 g

15011721827:52352403:印度群岛联盟的战争 52352403是文章的ID。这篇文章的标题是《印度群岛联盟之战》


我想使用Javascript从给定的文本文件中提取ID和标题对,您只需使用
split()
在匹配两点时分割字符串即可:

var text=“1234567890:12312312:Lorem ipsum door sit amet”;
var splitted=text.split(“:”);
console.log(“id:+splitted[1]);

console.log(“标题:“+splitted[2])因为在您的数据集中,您可以在标题a中找到
,最好像下面那样使用正则表达式

15011721827:52352403:War of the League of the Indies
9428491646:27687104:Deepwater Pathfinder
3524782652:4285058:Wikipedia:Articles for deletion/Joseph Prymak
2302538806:1870985:Cardinal Infante Ferdinand`
在第三行有一个
,它将维基百科与标题的其余部分分开,如果使用
拆分
函数,则将有一个由4部分组成的数组,而不是由3部分组成的数组。为了避免这种问题,我选择使用正则表达式

var模式=/^(\d+)(\d+):(.+)$/
var data=“15011721827:52352403:印度群岛联盟战争”
var matches=data.match(模式)
console.log(匹配项)
//比赛[0]=“15011721827:52352403:印度群岛联盟之战”
//匹配[1]=“15011721827”
//匹配[2]=“52352403”
//比赛[3]=“印度群岛联盟之战”
捕获组([0-9]+) +量词-一次和无限次之间的匹配,尽可能多的匹配, 0-9范围在0到9之间的单个字符

[:]与字符“:”匹配

•第三捕获组 (*)匹配任何字符(行终止符除外)

•\n与换行符匹配

import re

text = open('example.txt').read()
pattern = r'([0-9]+)[:]([0-9]+)[:](.*)\n'
regex = re.compile(pattern)
for match in regex.finditer(text):
      result = ("{},{}".format(match.group(2),match.group(3)))

逐行读取文件并匹配下面的正则表达式
[0-9]{10,}[:][0-9]{8}[:][a-z]+
,然后
让a=“15011721827:52352403:印度群岛联盟的战争”并使用[1]和[2]收集文章的id和名称请不要发布图片。我们有一个很好的问题格式系统。您可以键入这些内容,这样我们就不必导航到图像来帮助您。此外,这不是一个解决方案站点。你试过什么了吗?如果是,请发布。@PrAtikLochawalaI希望只使用正则表达式而不使用split进行求解,因为如果我们在“:”处拆分,则不合适,因为某些标题的名称中还包含“:”。谢谢您的回答。然而,您能否用语言解释一下为什么选择这个特定的解决方案?对于刚接触正则表达式的人来说,这将特别有助于正则表达式的构建。捕获组([0-9]+)+量词-在一次和无限次之间进行匹配,尽可能多的匹配,0-9在0到9[:]之间的单个字符匹配字符“:”•第三个捕获组(.*)匹配任何字符(行终止符除外)•\n匹配换行符
import re

text = open('example.txt').read()
pattern = r'([0-9]+)[:]([0-9]+)[:](.*)\n'
regex = re.compile(pattern)
for match in regex.finditer(text):
      result = ("{},{}".format(match.group(2),match.group(3)))