小编Emm*_*mma的帖子

正则表达式,用于带错别字的全文搜索

我有一个包含以下各列的MySQL表:

City      Country  Continent
New York  States   Noth America
New York  Germany  Europe - considering there's one ;)
Paris     France   Europe
Run Code Online (Sandbox Code Playgroud)

如果我想找到带有错字的“ New Yokr”,那么使用MySQL存储函数很容易:

$querylev = "select City, Country, Continent FROM table 
            WHERE LEVENSHTEIN(`City`,'New Yokr') < 3"
Run Code Online (Sandbox Code Playgroud)

但是,如果有两个纽约城市,以全文搜索,则可以输入“ New York States”,您会得到想要的结果。

所以问题是,我可以搜索“ New Yokr Statse”并获得相同的结果吗?

是否有任何将levenshtein和全文本合并以形成一个完整解决方案的函数,还是应该在MySQL中创建一个将三列连接在一起的新列?

我知道还有其他解决方案,例如lucene或Sphinx(也有soundex,metaphone,但对此无效),但我认为对我来说可能很难实现。

php regex full-text-search regex-group levenshtein-distance

5
推荐指数
1
解决办法
1010
查看次数

通过RegEx从Open3.popen3的stdout中提取值并存储它

我是Ruby的新手,似乎无法找到获取外部命令输出的方法.我需要提取命令返回的值.现在我有这样的事情:

stdin, stdout, stderr, wait_thr = Open3.popen3("#{path}/foobar", configfile)

if /exit 0/ =~ wait_thr.value.to_s
    runlog.puts("Foobar exited normally.\n")
    puts "Test completed."
    someoutputvalue = stdout.read("TX.*\s+(\d+)\s+")
    puts "Output value: " + someoutputvalue
end
Run Code Online (Sandbox Code Playgroud)

但我显然没有在stdout上使用正确的方法,因为Ruby告诉我它不能将String转换为Integer.

这样做的正确方法是什么?我在文档中找不到stdout可用的方法.使用28我正在使用Ruby 1.9.3.

更新

为了清楚起见,我正在尝试读取程序的输出,应用正则表达式,并将提取的值存储到变量中供以后使用.

因此,例如,如果输出是"TX So so so:28",我想只获得"28"(我验证上面的正则表达式匹配我需要匹配的内容,我只是想知道如何将所提取的值存储在一个变量).

ruby regex regex-group

5
推荐指数
1
解决办法
7707
查看次数

iPhone / iPad上的SSTP

是否可以使用iPhone上的SSTP协议进行VPN连接?

经过一番搜索,我发现SSTP由Microsoft提供并在Windows上使用。但是,Mac OS X也有一些客户端应用程序,例如SoftEther VPN。

谁能告诉我是否可以在iPhone上使用此协议?

iphone vpn ios

5
推荐指数
0
解决办法
8319
查看次数

如何在 dirsync python 模块中包含选项?

我有 python 版本 3.7.1。

我想将源目录中扩展名为 .835 的文件同步到目标目录。为什么这段代码会拉取所有文件?

import dirsync
dirsync.sync(source,destination,'sync',verbose=True,only='.*\.835$')
Run Code Online (Sandbox Code Playgroud)

我也试过 --include 选项和这样的模式:

import dirsync
pattern = r'.*\.835$'
dirsync.sync(source,destination,'sync',verbose=True,include=pattern)
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

regex python-3.x

5
推荐指数
1
解决办法
2790
查看次数

在单独的值之外的另一个(主)数组中创建一个数组

问题

我有一串用逗号分隔的数值,我想将它们包括在一个数组中,而且每对它们都是嵌套在主数组内的一个数组,作为我的图形顶点。

我该如何解决这个问题?

输入:

var vertices = "24,13,47,20,33,9,68,18,99,14,150,33,33,33,34,15,91,10";
Run Code Online (Sandbox Code Playgroud)

我希望他们成为的是:

输出:

var V_array = [[24,13],[47,20],[33,9],[68,18],[99,14],[150,33],[33,33],[34,15],[91,10]];
Run Code Online (Sandbox Code Playgroud)

javascript arrays multidimensional-array

5
推荐指数
1
解决办法
102
查看次数

如何识别在特定时间范围内发生的行?

我有一张桌子,上面有病人的医院就诊信息。我正在尝试标记上次访问后90天内发生的访问。但是,需要注意的是,一旦将某个访问标记为重复访问,就不应将该访问用于评估与另一个访问的重复。让我举例说明。

visitID     patientid    visit_date  
1           23           1/12/2018
2           23           1/30/2018
3           23           4/20/2018
4           23           5/02/2018
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,患者进行了4次就诊。访问2在访问1的90天内,因此应将访问2标记为重叠。标记访问2后,该行就不应在分析中用于以后的任何访问的重叠标识。从概念上讲,这就像删除访问2并再次开始分析。

过渡阶段(访问2已删除,分析再次开始)

visitID     patientid    visit_date  
1           23           1/12/2018
3           23           4/20/2018
4           23           5/02/2018
Run Code Online (Sandbox Code Playgroud)

因此,即使访问3与访问2重叠,由于从分析中删除了访问2,由于前一次访问(访问1)的距离还不到90天,因此不会标记访问3。最后,应标记4次访问,因为它与未标记的访问重叠。

预期的输出

visitID     patientid    visit_date flag
1           23           1/12/2018  0
2           23           1/30/2018  1
3           23           4/20/2018  0 
4           23           5/02/2018  1
Run Code Online (Sandbox Code Playgroud)

我试图解决这个难题:

WITH overlaps AS 
    (SELECT DISTINCT T2.visit
    FROM visits_table AS T1
    INNER JOIN visits_table AS T2
            ON T1.visit != T2.visit
                AND T2.visit_date BETWEEN T1.visit_date AND DATEADD(DAY, 89, …
Run Code Online (Sandbox Code Playgroud)

sql sql-server overlap common-table-expression

5
推荐指数
1
解决办法
75
查看次数

正则表达式用于匹配仅由字母列表构成的单词

给定一组单词,我需要知道哪些单词仅由一组字母组成。即使此字母是验证集的一部分,该单词的字母也不能超过允许的数量。

例:

Char set: a, a, ã, c, e, l, m, m, m, o, o, o, o, t (fixed set)

Words set: mom, ace, to, toooo, ten, all, aaa (variable set)
Run Code Online (Sandbox Code Playgroud)

结果:

mom = true
ace = true
to = true
toooo = true
ten = false (n is not in the set)
all = false (there is only 1 L in the set)
aaa = false (theres is only 2 A in the set)
Run Code Online (Sandbox Code Playgroud)

如何在Javascript中生成此正则表达式?(区分大小写不是问题)。

我尝试了以下代码,但未成功:

var str = …
Run Code Online (Sandbox Code Playgroud)

javascript regex regex-group regex-greedy regex-lookarounds

5
推荐指数
1
解决办法
113
查看次数

匹配日期的正则表达式(月日、年或 m/d/yy)

我正在尝试编写一个正则表达式,该表达式可用于在字符串中查找日期,该字符串前面(或后面)可能有空格、数字、文本、行尾等。该表达式应处理美国日期格式要么

1) Month Name Day, Year - 即 2019 年 1 月 10 日或
2) mm/dd/yy - 即 11/30/19

我为月份名称,年份找到了这个

(Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?)\s+\d{1,2},\s+\d{4}
Run Code Online (Sandbox Code Playgroud)

(感谢 Veverke 在这里Regex 匹配日期,如月份名称日逗号和年份

这对于 mm/dd/yy(以及 m/d/y 的各种组合)

(1[0-2]|0?[1-9])/(3[01]|[12][0-9]|0?[1-9])/(?:[0-9]{2})?[0-9]{2} 
Run Code Online (Sandbox Code Playgroud)

(在此感谢 Steven Levithan 和 Jan Goyvaerts https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch04s04.html

我试图把它们像这样结合起来

((Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?)\s+\d{1,2},\s+\d{4})|((1[0-2]|0?[1-9])/(3[01]|[12][0-9]|0?[1-9])/(?:[0-9]{2})?[0-9]{2})
Run Code Online (Sandbox Code Playgroud)

当我在输入字符串“Paid on 1/1/2019”中搜索“on [regex above]”时,它确实找到了日期,但没有找到“on”这个词。如果我只是使用,则找到该字符串

(1[0-2]|0?[1-9])/(3[01]|[12][0-9]|0?[1-9])/(?:[0-9]{2})?[0-9]{2}
Run Code Online (Sandbox Code Playgroud)

谁能看到我做错了什么?

编辑

我正在使用下面的 c# .net 代码:

    string stringToSearch = "Paid on 1/1/2019";
    string searchPattern = @"on ((Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?)\s+\d{1,2},\s+\d{4})|((1[0-2]|0?[1-9])/(3[01]|[12][0-9]|0?[1-9])/(?:[0-9]{2})?[0-9]{2})";
    var match = Regex.Match(stringToSearch, searchPattern, RegexOptions.IgnoreCase);


    string foundString;
    if (match.Success)
        foundString= stringToSearch.Substring(match.Index, match.Length);
Run Code Online (Sandbox Code Playgroud)

例如

string searchPattern = …
Run Code Online (Sandbox Code Playgroud)

c# regex regex-group regex-greedy regex-lookarounds

5
推荐指数
1
解决办法
5608
查看次数

swift中的正则表达式

我对 swift 中的 NSRegularExpression 有点困惑,有人可以帮助我吗?

任务:1给出("name","john","name of john")
那么我应该得到["name","john","name of john"]. 在这里我应该避免使用括号。

任务:2给出("name"," john","name of john")
那么我应该得到["name","john","name of john"]. 在这里我应该避免括号和额外的空格,最后得到字符串数组。

任务:3给出key = value // comment
那么我应该得到["key","value","comment"]. 在这里,我应该通过避免只获取行中的字符串,=并且//
我已经尝试了下面的任务 1 代码但没有通过。

let string = "(name,john,string for user name)"
let pattern = "(?:\\w.*)"

do {
    let regex = try NSRegularExpression(pattern: pattern, options: .caseInsensitive)
    let matches = regex.matches(in: string, options: [], range: NSRange(location: 0, length: string.utf16.count))
    for match …
Run Code Online (Sandbox Code Playgroud)

regex regex-group nsregularexpression regex-greedy swift

5
推荐指数
1
解决办法
3900
查看次数

浅层 prop 比较对于连接的组件如何工作?

根据 redux 的文档,reducer 总是给出一个新的状态副本。mapStateToProps在连接的组件中,react-redux 对(旧的与新的 props)中提到的属性进行浅层比较。

我的困惑是,由于 redux 总是提供新的状态副本,react-redux 所做的浅层比较应该总是给出 false,并且组件应该总是重新渲染。但这并没有发生。

有人可以解释我缺少什么吗?

我正在考虑在 mapStateToProp 中读取的所有属性都是对象。

reactjs react-native redux react-redux

5
推荐指数
1
解决办法
2180
查看次数