我试着通过一个简单的例子来解释我的意思:
我有这样一张桌子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) 我试图匹配笑脸,然后是一个单词边界\b.
让我们说我想匹配:p,:)然后跟着\b.
/(:p)\b/工作正常,但为什么/(:\))\b/表现相反?
我需要一个正则表达式来捕获括号之间的参数.不应该捕获论证之前和之后的空白.例如,"( 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) 在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 CLR的C# 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).
Sublime Text 使用什么正则表达式语法?POSIX?POSIX 扩展?
使用Notepad ++ 查找和替换功能,我想在每第n次出现一个字符或字符串时插入一个新行(在我的例子中是一个逗号).
我使用"正则表达式"模式尝试了下面的正则表达式,但没有运气.
找什么: ((,){1000})
替换为:\1\n
我有以下字符串
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),但它排除了最后一次' - ',这不是我想要的.
我有以下文字:
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)']
如何从令牌中取出括号并使其成为自己的令牌?
谢谢你的想法。
我试图删除字符串中的括号,如下所示.
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似乎没有找到结束括号?有什么想法吗?
我需要一种方法让我的函数在运行时接收一个字符串并删除反斜杠,同时保留它前面的字符。所以对于 \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 仍然丢失。
regex ×6
string ×4
r ×2
.net ×1
c# ×1
c++ ×1
gsub ×1
javascript ×1
match ×1
mysql ×1
notepad++ ×1
php ×1
python ×1
replace ×1
split ×1
sql-server ×1
stringr ×1
sublimetext ×1
sublimetext2 ×1
sublimetext3 ×1
sublimetext4 ×1
tokenize ×1