正则表达式为三个点?

时间:2017-05-17 09:50:31

标签: javascript regex

我正在尝试使用JavaScript的var str = '<tspan x="0" y="0" dx="0" dy="0em">Life</tspan><tspan x="0" y="0" dx="0" dy="1em">sciences</tspan><tspan x="0" y="0" dx="0" dy="2em">and ...</tspan><title>Life sciences and healthcare</title><tspan x="0" y="0" dx="0" dy="2em"></tspan>'; console.log(str.search('\.\.\.'));方法在包含三个点的字符串中找到三个点:

&#13;
&#13;
0
&#13;
&#13;
&#13;

但这会返回import csv import pymysql path = '/home/abi/Downloads' conn = pymysql.connect(host='127.0.0.1', port=3306, user='user', passwd='pass', db='db_name', charset='utf8') cursor1 = conn.cursor() cursor2 = conn.cursor() cursor3 = conn.cursor() file=open( path +"university.CSV", "r") reader = csv.reader(file) for line in reader: csv_school_name = line[0] csv_school_type = line[3] cursor1.execute("select id from schools_names where school_name = s%", csv_school_name) corresponding_school_name_id = cursor1.fetchone() cursor2.execute("select id from schools_types where school_type = s%", csv_school_type) corresponding_school_type_id = cursor2.fetchone() - 为什么?它会在https://regex101.com/上返回正确的匹配。

(是的,我知道使用正确的省略号字符会更好。)

4 个答案:

答案 0 :(得分:2)

\是正则表达式中的转义字符。

\ 也是字符串文字中的转义字符。

将字符串传递给search时,它会转换为正则表达式。

"\.\.\."变为/.../

您需要转义\个字符,以便最终在正则表达式中使用\"\\.\\.\\."

OR(这是更好的选择)使用正则表达式文字而不是字符串文字:/\.\.\./

如果你没有明确地重复自己,你最终会得到更清晰的代码:/\.{3}/

var str = '<tspan x="0" y="0" dx="0" dy="0em">Life</tspan><tspan x="0" y="0" dx="0" dy="1em">sciences</tspan><tspan x="0" y="0" dx="0" dy="2em">and ...</tspan><title>Life sciences and healthcare</title><tspan x="0" y="0" dx="0" dy="2em"></tspan>';

console.log(str.search(/\.{3}/));

答案 1 :(得分:1)

你的正则表达式是正确的,它更多的是关于JavaScript synthax ......

RegEx docs开始,有两个合成器构建一个RegEx:

var re = /\w+/;              // literal notation
var re = new RegExp('\\w+'); // explicit call to the constructor

在您的情况下,它将是:

&#13;
&#13;
var str = '<tspan x="0" y="0" dx="0" dy="0em">Life</tspan><tspan x="0" y="0" dx="0" dy="1em">sciences</tspan><tspan x="0" y="0" dx="0" dy="2em">and ...</tspan><title>Life sciences and healthcare</title><tspan x="0" y="0" dx="0" dy="2em"></tspan>';
console.log(str.search(/\.\.\./));
console.log(str.search(new RegExp('\\.\.\.')));
&#13;
&#13;
&#13;

答案 2 :(得分:0)

  

您发出

     

你没有声明正则表达式/(pattern)/g的格式。你只是搜索字符串\.\.\。但是...与字符串不匹配。所以你需要匹配一些正则表达式模式。 /\.\.\./g。这就是原因   你的代码无效。regex101.com有正则表达式格式。你是   只应用模式,看到你的代码在转换为正则表达式后工作

查看图片regex101.com有//g format enter image description here

&#13;
&#13;
var str = '<tspan x="0" y="0" dx="0" dy="0em">Life</tspan><tspan x="0" y="0" dx="0" dy="1em">sciences</tspan><tspan x="0" y="0" dx="0" dy="2em">and ...</tspan><title>Life sciences and healthcare</title><tspan x="0" y="0" dx="0" dy="2em"></tspan>';
    console.log(str.search(/\.\.\./g));
&#13;
&#13;
&#13;

最好尝试这种模式[.]{3}Demo

&#13;
&#13;
var str = '<tspan x="0" y="0" dx="0" dy="0em">Life</tspan><tspan x="0" y="0" dx="0" dy="1em">sciences</tspan><tspan x="0" y="0" dx="0" dy="2em">and ...</tspan><title>Life sciences and healthcare</title><tspan x="0" y="0" dx="0" dy="2em"></tspan>';
console.log(str.search(/[.]{3}/g));
&#13;
&#13;
&#13;

答案 3 :(得分:-1)

要搜索的正则表达式应为\.{3}