![]() |
1
42
简而言之:你不能。一个匹配总是连续的,即使它包含零宽度断言,如果你想在下一个字符之后找到它,也没有办法匹配下一个字符。 |
![]() |
2
16
实际上没有一种方法可以创建这样一个表达式:匹配的文本与源文本中的文本不同。您需要在单独的步骤中删除连字符,方法是单独匹配第一部分和第二部分,并连接两个组:
或者在与匹配过程分开的步骤中删除连字符:
|
![]() |
3
4
您的断言,如果不使用子分组+具体化它是不可能做到的,这是正确的。 你也可以像杰夫·希尔曼那样,只需在事后揭穿坏人。 这里要注意的重要一点是,你“不要用regex做任何事情”。 regex是为解决非平凡的问题而设计的,你不应该用“哦,我们会用regex”来解决所有问题,你不应该认为你可以用一步regex来解决问题。 当有一个可行的琐碎方法,无论如何都能奏效时,使用它。 另一种想法是,如果您碰巧需要在代码体中返回多个匹配项,请查找基于语言“回调”的regex,它允许将任何匹配/找到的组传递给可以进行内联替换的函数调用。(尤其是在做regexp替换时非常方便)。 不确定它在.NET中是如何工作的,但在PHP中,您可以执行类似的操作(不是精确的代码)。
|
![]() |
4
1
可以使用嵌套的捕获组,如下所示:
第一个捕获组是
|
![]() |
5
0
有点晚了,但我想我已经弄明白了。至少有一种方法可以做到。 我用积极的期待停在我的文本中的标志。我不想要这个空间或标志,所以我不得不想办法“跳过”它们。所以当我被迫再次匹配它们时,我把它们扔到了一个垃圾组中,而我并没有打算使用(.ie,一个比特桶),在代码中就是这样。现在,我的位置指针是在符号之外的一个字符位置(在我想要的位置,跳过空格和符号)。我现在只匹配文件名的结尾。忽略文件扩展名。
使用的文件名是
|
![]() |
lonix · 使用sed从JSON中提取非贪婪正则表达式 1 年前 |
![]() |
Dima Malko · 如何在指定符号前添加符号? 2 年前 |
![]() |
shekharsabale · 从列表元素捕获子字符串 2 年前 |
![]() |
Katia · 根据特定规则进行多行匹配 2 年前 |
![]() |
MHA · Pandas str.extract()以字母结尾的数字 2 年前 |
![]() |
Slava Vir · 如何查找后面“/”之间的最后一组 2 年前 |