我正在尝试使用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('\.\.\.'));
方法在包含三个点的字符串中找到三个点:
0
&#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/上返回正确的匹配。
(是的,我知道使用正确的省略号字符会更好。)
答案 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
在您的情况下,它将是:
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;
答案 2 :(得分:0)
您发出:
你没有声明正则表达式
/(pattern)/g
的格式。你只是搜索字符串\.\.\
。但是...
与字符串不匹配。所以你需要匹配一些正则表达式模式。/\.\.\./g
。这就是原因 你的代码无效。regex101.com
有正则表达式格式。你是 只应用模式,看到你的代码在转换为正则表达式后工作
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;
最好尝试这种模式[.]{3}
。 Demo
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;
答案 3 :(得分:-1)
要搜索的正则表达式应为\.{3}