|
|
1
9
概述在R中有一种方法可以完全使用正则表达式来实现这一点,但它并不漂亮(尽管我认为它看起来很可爱!)这个答案也可以根据您的需要进行定制(最少两个大写字母,最少三个,等等)-即可扩展-并且可以匹配多个水平空白字符(不使用lookbehind,这需要固定的宽度)。 密码
替换:空字符串
我使用的原始图案
如果您还需要确保数字不在大写字母之前,可以使用
用法
后果输入
输出
解释
编辑2(python)
下面是与上面类似的python(它需要
PyPi regex
运行)。我替换了
以上正则表达式基于第一个正则表达式。如果要使用第二个正则表达式,请使用以下命令:
使用回调请看 Wiktor's original answer 关于回调,这只是将他的R程序移植到python中的一个版本。这不使用PyPi正则表达式库,因此它不匹配。此外,这与Unicode不匹配。
|
|
|
2
8
正如我在评论中指出的那样,问题中的第一个gsubfn调用中的问题是因为正则表达式中有两个捕获组,但函数只有一个参数。这些需要匹配——两个捕获组意味着需要两个参数。通过运行此命令并查看打印语句的输出,我们可以看到gsubfn传递了什么:
我们可以通过以下任何方式解决这一问题: 1) 这使用了问题中的正则表达式,但使用了一个接受多个参数的函数。函数中实际上只使用了第一个参数。
注意,它将公式解释为函数:
我们可以这样查看由公式生成的函数:
2) 这使用了问题中的正则表达式和问题中的函数,但添加了backref=-1参数,该参数告诉它只将第一个捕获组传递给函数——减号表示也不会传递整个匹配。
(正如@Wiktor Stribiew在他的回答中指出的那样
3)
注意,它将公式解释为以下函数:
|
|
3
5
这里的问题是哪些项传递给
请参阅
因此,在你的情况下
这个
什么时候
实际上,你可以使用
|
|
|
4
1
您可以简单地匹配前面有大写字母的空格,以及后面有两个由空格分隔的大写字母(使用环视)。 或者反过来 -匹配前面有两个大写字母的空格,两个大写字母之间用空格隔开,然后后跟一个大写字母。
R代码:
|
|
|
DotFX · RegEx捕获关键字前但括号后的所有内容 1 年前 |
|
|
Andrus · 如何在sql中查找第二个匹配项 1 年前 |
|
|
iato · 确保正则表达式不从命名材料中的数字中提取 1 年前 |
|
|
vr8ce · 非成对标记中特定字符的正则表达式 1 年前 |
|
|
MARTIN · 交换第一个和最后一个单词,反转所有中间的字符 1 年前 |
|
|
Carsten · 使用最近的搜索模式更改文本块 1 年前 |