小编Wik*_*żew的帖子

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

我试图匹配笑脸,然后是一个单词边界\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
查看次数

正则表达式选择一个单词的一部分

我有这样的文字:

my text has $1 per Lap to someone. 
Run Code Online (Sandbox Code Playgroud)

谁能告诉我如何从中挑选per零件.我知道如何选择$金额.就像这样:

new Regex(@"\$\d+(?:\.\d+)?").Match(s.Comment1).Groups[0].ToString()
Run Code Online (Sandbox Code Playgroud)

任何帮助将受到高度赞赏.

c# regex

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

检测单个行情内的两个连续单行情

我正在努力使这个正则表达式模式完全正确,如果有人有更好的选择,我对正则表达式之外的其他选项持开放态度.

情况:我基本上是要针对C#中的文本列解析T-SQL"in"子句.所以,我需要采用这样的字符串值: "'don''t', 'do', 'anything', 'stupid'"

并将其解释为值列表(稍后我会处理双引号):

  • "don''t"
  • "do"
  • "anything"
  • "stupid"

我有一个适用于大多数情况的正则表达式,但是我很难将它概括为可以接受任何字符或我的组中的双引号单引号: (?:')([a-z0-9\s(?:'(?='))]+)(?:')[,\w]*

我对正则表达式很有经验,但很少(如果有的话)发现需要环顾四周(因此降低了对我的正则表达式经验的评估).

所以,换句话说,我想要一串逗号分隔的值,每个值都用单引号括起来,但可以包含加倍的单引号,并输出每个这样的值.

编辑 这是我当前正则表达式的一个非工作示例(我的问题是我需要处理我的分组中的所有字符,当我遇到单引号后没有第二个单引号时停止):

"'don''t', 'do?', 'anything!', '#stupid$'"

.net c# regex regex-lookarounds

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

如何评估正则表达式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
查看次数

在运行时删除 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
查看次数

替换文本中大于 5 位的数字

a <- c("this is a number 9999333333 and i got 12344")
Run Code Online (Sandbox Code Playgroud)

我如何将大于 5 位的数字替换为额外的数字为“X”

预期输出:

"this is a number 99993XXXXX and i got 12344"
Run Code Online (Sandbox Code Playgroud)

我试过的代码:

gsub("(.{5}).*", "X", a)
Run Code Online (Sandbox Code Playgroud)

regex r gsub regex-group data-masking

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

使用lookahead,如何确保至少包含4个字母数字字符+下划线

我试图确保输入中至少包含 4 个字母数字字符,并且也允许使用下划线。

正则表达式教程有点超出我的理解,因为它讨论了断言以及匹配时的成功/失败。

^\w*(?=[a-zA-Z0-9]{4})$
Run Code Online (Sandbox Code Playgroud)

我的理解:

\w--> 字母数字+下划线

*--> 匹配前一个标记零次到无限次(所以,这意味着它可以是任何字母数字/下划线字符,对吗?)

(?=[a-zA-Z0-9]{4})--> 向前查看前面的字符,如果它们至少包含 4 个字母数字字符,那么我就很好。

显然我错了,因为 regex101 没有向我显示任何匹配项。

javascript regex

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

检查字符串是否在另一列 pandas 中

下面是我的DF

df= pd.DataFrame({'col1': ['[7]', '[30]', '[0]', '[7]'], 'col2': ['[0%, 7%]', '[30%]', '[30%, 7%]', '[7%]']})

col1    col2    
[7]     [0%, 7%]
[30]    [30%]
[0]     [30%, 7%]
[7]     [7%]
Run Code Online (Sandbox Code Playgroud)

目的是检查 col1 值是否包含在下面的 col2 中是我尝试过的

df['test'] = df.apply(lambda x: str(x.col1) in str(x.col2), axis=1)
Run Code Online (Sandbox Code Playgroud)

以下是预期输出

col1    col2       col3
[7]     [0%, 7%]   True
[30]    [30%]      True
[0]     [30%, 7%]  False
[7]     [7%]       True
Run Code Online (Sandbox Code Playgroud)

python pandas

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

正则表达式忽略下划线

我有一个正则表达式([-@.\/,':\w]*[\w])*,它匹配文本中的所有单词(包括像IBM这样的标点符号),但我想让它排除下划线,我似乎无法弄清楚如何做到这一点...我尝试添加^[_](例如(^[_][-@.\/,':\w]*[\w])*)但它只是将所有单词分解为字母.我想保留单词匹配,但我不希望在其中包含带下划线的单词,也不希望单词完全由下划线组成.

什么是正确的方法来做到这一点?

PS

  • 我的应用程序是用C#编写的(如果这有任何区别).
  • 我不能使用A-Za-z0-9因为我必须匹配单词而不管语言(可能是中文,俄文,日文,德文,英文).

更新
这是一个例子:

"IBM应该被解析为一个单词w_o_r_d!俄语也应该起作用:мплексисторическихсобытий."

比赛应该是:

I.B.M.  
should  
be  
parsed  
as  
one  
word  
Russian  
should  
work  
too  
??????  
????????????  
???????  
Run Code Online (Sandbox Code Playgroud)

请注意,w_o_r_d不应该匹配.

c# regex regex-negation

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