小编Wik*_*żew的帖子

MySQL:计算每个条目的LIKE匹配数

我试着通过一个简单的例子来解释我的意思:

我有这样一张桌子myprods:

id | name
1    galaxy s4 mini
2    samsung galaxy s4
3    galaxy galaxy s3
4    iphone 4s
5    apple iphone 4s
Run Code Online (Sandbox Code Playgroud)

到目前为止我有这个查询:

SELECT *
FROM   myprods
WHERE  name LIKE "%samsung%" OR name LIKE "%galaxy%" OR name LIKE "%s4%"
Run Code Online (Sandbox Code Playgroud)

我的查询结果是:

id | name
1    galaxy s4 mini
2    galaxy s4
3    galaxy galaxy s3
Run Code Online (Sandbox Code Playgroud)

现在我不仅返回匹配的行,还返回命中数.如果其中一个LIKE-phrase适用于该行,那么ONE命中.因此,在这种情况下,我希望命中为0,1,2或3.这意味着:LIKE短语"%galaxy%"不应该被计为id = 3的两次命中,它只计为"命中"或"未命中" .

预期的结果现在是:

id | name               | hits
1    galaxy s4 mini       2
2    samsung galaxy s4    3 …
Run Code Online (Sandbox Code Playgroud)

php mysql string match

6
推荐指数
1
解决办法
3971
查看次数

匹配":)"笑脸,然后是单词边界

我试图匹配笑脸,然后是一个单词边界\b.

让我们说我想匹配:p,:)然后跟着\b.

/(:p)\b/工作正常,但为什么/(:\))\b/表现相反?

javascript regex

6
推荐指数
1
解决办法
140
查看次数

VS13正则表达式中的错误:替代品的订单错误?

我需要一个正则表达式来捕获括号之间的参数.不应该捕获论证之前和之后的空白.例如,"( ab & c )"应该返回"ab & c".如果需要前导或尾随空白,则可以将参数括在单引号中.所以,"( ' ab & c ' )"应该回来" ab & c ".

wstring String = L"( ' ab & c ' )";
wsmatch Matches;
regex_match( String, Matches, wregex(L"\\(\\s*(?:'(.+)'|(.+?))\\s*\\)") );
wcout << L"<" + Matches[1].str() + L"> " + L"<" + Matches[2].str() + L">" + L"\n";
// Results in "<> < ' ab & c '>", not OK
Run Code Online (Sandbox Code Playgroud)

似乎第二种选择匹配,但它也占据了第一个引用前面的空间!应该\s在开括号之后抓住它.

删除第二个替代方案:

regex_match( String, Matches, wregex(L"\\(\\s*(?:'(.+)')\\s*\\)") );
wcout …
Run Code Online (Sandbox Code Playgroud)

c++ regex visual-studio-2013

6
推荐指数
1
解决办法
79
查看次数

如何评估正则表达式OR运算符

T-SQL中,我使用NEWID()函数生成了UNIQUEIDENTIFIER.例如:

723952A7-96C6-421F-961F-80E66A4F29D2
Run Code Online (Sandbox Code Playgroud)

然后,-删除所有破折号(),它看起来像这样:

723952A796C6421F961F80E66A4F29D2
Run Code Online (Sandbox Code Playgroud)

现在,我需要UNIQUEIDENTIFIER使用以下格式xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx将上面的字符串转换为有效并再次设置破折号.

为了实现这一点,我使用这个正则表达式SQL CLRC# RegexMatches函数实现,^.{8}|.{12}$|.{4}这给了我:

SELECT *
FROM [dbo].[RegexMatches] ('723952A796C6421F961F80E66A4F29D2', '^.{8}|.{12}$|.{4}')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

使用上面的内容,我可以轻松地再次构建一个正确的,UNIQUEIDENTIFIER但我想知道如何OR在正则表达式中计算运算符.例如,以下内容不起作用:

SELECT *
FROM [dbo].[RegexMatches] ('723952A796C6421F961F80E66A4F29D2', '^.{8}|.{4}|.{12}$')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

它是确保第一个正则表达式将首先匹配的开始和字符串的结尾,那么其他的值,并且总是在这个顺序返回比赛(我会有问题,如果举例来说,96C6在后匹配421F).

.net c# regex sql-server sql-server-2012

6
推荐指数
1
解决办法
150
查看次数

6
推荐指数
1
解决办法
1485
查看次数

Notepad ++在每第n次出现一个字符串/字符时插入新行

使用Notepad ++ 查找和替换功能,我想在每第n次出现一个字符或字符串时插入一个新行(在我的例子中是一个逗号).

我使用"正则表达式"模式尝试了下面的正则表达式,但没有运气.

找什么: ((,){1000})

替换为:\1\n

regex notepad++

6
推荐指数
1
解决办法
6425
查看次数

在第二次出现某个字符串后排除所有内容

我有以下字符串

string <- c('a - b - c - d',
            'z - c - b',
            'y',
            'u - z')
Run Code Online (Sandbox Code Playgroud)

我想将它分配,以便第二次出现' - '后的所有内容都被丢弃.

结果是这样的:

> string
[1]  "a - b" "z - c" "y"     "u - z"
Run Code Online (Sandbox Code Playgroud)

我用过substr(x = string, 1, regexpr(string, pattern = '[^ - ]*$') - 4),但它排除了最后一次' - ',这不是我想要的.

regex r

6
推荐指数
1
解决办法
2461
查看次数

使用正则表达式(括号)进行标记

我有以下文字:

I don't like to eat Cici's food (it is true)

我需要将它标记为

['i', 'don't', 'like', 'to', 'eat', 'Cici's', 'food', '(', 'it', 'is', 'true', ')']

我发现以下正则表达式(['()\w]+|\.)拆分如下:

['i', 'don't', 'like', 'to', 'eat', 'Cici's', 'food', '(it', 'is', 'true)']

如何从令牌中取出括号并使其成为自己的令牌?

谢谢你的想法。

regex string split tokenize

6
推荐指数
1
解决办法
7063
查看次数

str_replace不会替换所有出现,但gsub呢?

我试图删除字符串中的括号,如下所示.

library(stringr)

x <- "(Verhoeff,1937)"

str_replace(string = x, pattern = "(\\()|(\\))", replacement = "")
[1] "Verhoeff,1937)"

gsub(pattern = "(\\()|(\\))", replacement = "", x = x)
[1] "Verhoeff,1937"
Run Code Online (Sandbox Code Playgroud)

str_replace似乎没有找到结束括号?有什么想法吗?

string replace r gsub stringr

6
推荐指数
1
解决办法
1343
查看次数

在运行时删除 Python 中的反斜杠

我需要一种方法让我的函数在运行时接收一个字符串并删除反斜杠,同时保留它前面的字符。所以对于 \a 我必须得到一个。这也必须适用于像 \e -> e 这样的非转义字符。

我已经在互联网上寻找解决此问题的一般解决方案,但似乎没有。我发现的最佳解决方案是使用字典从头开始构建字符串,例如:如何防止 Python 中的特殊字符自动转义

escape_dict={'\a':r'\a',
         '\b':r'\b',
         '\c':r'\c',
         '\f':r'\f',
         '\n':r'\n',
         '\r':r'\r',
         '\t':r'\t',
         '\v':r'\v',
         '\'':r'\'',
         '\"':r'\"',
         '\0':r'\0',
         '\1':r'\1',
         '\2':r'\2',
         '\3':r'\3',
         '\4':r'\4',
         '\5':r'\5',
         '\6':r'\6',
         '\7':r'\7',
         '\8':r'\8',
         '\9':r'\9'}
def raw(text):
    """Returns a raw string representation of the string"""
    new_string=''
    for char in text:
        try: 
            new_string += escape_dict[char]
        except KeyError: 
            new_string += char
    return new_string
Run Code Online (Sandbox Code Playgroud)

然而,由于转义数字和转义字母之间的冲突,这通常会失败。使用像 \001 而不是 \1 这样的 3 位数字也会失败,因为输出中会有额外的数字,这违背了目的。我应该简单地删除反斜杠。其他基于编码的建议解决方案,例如在 Python 中处理字符串中的转义序列

也不起作用,因为这只是将转义字符转换为十六进制代码。\a 被转换为 \x07。即使以某种方式删除它,字符 a 仍然丢失。

python string character-encoding

6
推荐指数
1
解决办法
124
查看次数