相关疑难解决方法(0)

除了XHTML自包含标记之外,RegEx匹配开放标记

我需要匹配所有这些开始标记:

<p>
<a href="foo">
Run Code Online (Sandbox Code Playgroud)

但不是这些:

<br />
<hr class="foo" />
Run Code Online (Sandbox Code Playgroud)

我想出了这个,并希望确保我做对了.我只抓住了a-z.

<([a-z]+) *[^/]*?>
Run Code Online (Sandbox Code Playgroud)

我相信它说:

  • 找一个小于,然后
  • 然后,查找(并捕获)az一次或多次
  • 然后找到零个或多个空格
  • 找到任何字符零次或多次,贪婪/,然后
  • 找到一个大于

我有这个权利吗?更重要的是,你怎么看?

html regex xhtml

1323
推荐指数
36
解决办法
270万
查看次数

正则表达式用小写字母替换大写

我正在尝试使用正则表达式将大写字母替换为相应的小写字母.以便

EarTH:   1,
MerCury: 0.2408467,
venuS:   0.61519726,
Run Code Online (Sandbox Code Playgroud)

earth:   1,
mercury: 0.2408467,
venus:   0.61519726,
Run Code Online (Sandbox Code Playgroud)

在Sublime Text中.如何只在包含小写和大写字母的单词中包含字母?这样它影响venUs而不影响VENUS.

sublimetext sublimetext2 sublimetext3

188
推荐指数
4
解决办法
13万
查看次数

仅使用Regex替换某些组

我们假设我有以下正则表达式:

-(\d+)-
Run Code Online (Sandbox Code Playgroud)

我想更换,使用C#,1组(\d+)AA,获得:

-AA-
Run Code Online (Sandbox Code Playgroud)

现在我用以下方法替换它:

var text = "example-123-example";
var pattern = @"-(\d+)-";
var replaced = Regex.Replace(text, pattern, "-AA-"); 
Run Code Online (Sandbox Code Playgroud)

但我真的不喜欢这个,因为如果我改变模式来匹配_(\d+)_,我也必须改变替换字符串_AA_,这是违反DRY原则的.

我正在寻找类似的东西:

保持匹配的文本的确切方式,但更改组1 this text和组2 another text...

编辑:
这只是一个例子.我只是在寻找一种做我上面所说的通用方法.

它应该适用于:

anything(\d+)more_text 以及你能想象到的任何模式.

我想要做的只是替换组,并保持匹配的其余部分.

c# regex replace

179
推荐指数
5
解决办法
11万
查看次数

在Python 3中加速数百万的正则表达式替换

我正在使用Python 3.5.2

我有两个清单

  • 大约750,000个"句子"的列表(长串)
  • 我希望从我的750,000个句子中删除大约20,000个"单词"的列表

所以,我必须循环750,000个句子并执行大约20,000次替换,但是只有我的话实际上是"单词"并且不是更大字符串的一部分.

我是通过预先编译我的文字来做到这一点的,这样它们就被\b元字符所包围

compiled_words = [re.compile(r'\b' + word + r'\b') for word in my20000words]
Run Code Online (Sandbox Code Playgroud)

然后我循环我的"句子"

import re

for sentence in sentences:
  for word in compiled_words:
    sentence = re.sub(word, "", sentence)
  # put sentence into a growing list
Run Code Online (Sandbox Code Playgroud)

这个嵌套循环每秒处理大约50个句子,这很好,但是处理我的所有句子仍需要几个小时.

  • 有没有办法使用该str.replace方法(我认为更快),但仍然要求替换只发生在字边界

  • 或者,有没有办法加快re.sub方法?re.sub如果我的单词的长度大于句子的长度,我已经通过跳过来略微提高了速度,但这并没有太大的改进.

谢谢你的任何建议.

python regex string performance replace

117
推荐指数
7
解决办法
2万
查看次数

正则表达式:?:表示法(问号和冒号)

我有以下Java正则表达式,我没有写,我试图修改:

^class-map(?:(\\s+match-all)|(\\s+match-any))?(\\s+[\\x21-\\x7e]{1,40})$
           ^                                 ^
Run Code Online (Sandbox Code Playgroud)

它与类似.

注意第一个问号.这是否意味着该组是可选的?对应之后已有问号).结肠在正则表达式中有特殊意义吗?

正则表达式编译得很好,并且已经有JUnit测试显示它是如何工作的.只是我对第一个问号和冒号的原因感到有些困惑.

java regex

92
推荐指数
2
解决办法
5万
查看次数

正则表达式匹配一个数字两到四次

这是一个关于正则表达式的简单问题,但我找不到答案.

我想确定一个数字是否按顺序出现两次四次.我可以使用什么语法?

\d{what goes here?}

我试过\d{2,4},但这个表达式也接受三位数.

regex numbers

75
推荐指数
2
解决办法
7万
查看次数

我如何处理特殊字符,如\ ^ $.?*| +()[{在我的正则表达式?

我想匹配一个正则表达式特殊字符,\^$.?*|+()[{.我试过了:

x <- "a[b"
grepl("[", x)
## Error: invalid regular expression '[', reason 'Missing ']''
Run Code Online (Sandbox Code Playgroud)

(等价stringr::str_detect(x, "[")stringi::stri_detect_regex(x, "[").)

将值加倍以逃避它不起作用:

grepl("[[", x)
## Error: invalid regular expression '[[', reason 'Missing ']''
Run Code Online (Sandbox Code Playgroud)

也没有使用反斜杠:

grepl("\[", x)
## Error: '\[' is an unrecognized escape in character string starting ""\["
Run Code Online (Sandbox Code Playgroud)

我如何匹配特殊字符?


这个问题的一些特殊情况是陈旧的,写得足够好,因为它可以像这样重复关闭:
在R正则表达式中逃脱的时期
如何逃避R中的问号?
在正则表达式中转义管道("|")

regex r r-faq

64
推荐指数
1
解决办法
10万
查看次数

参考 - 这个正则表达式意味着什么?

这是什么?

这是常见问答的集合.这也是社区Wiki,因此每个人都被邀请参与维护.

为什么是这样?

患的是给我泽码型的问题和答案不佳,没有解释.此参考旨在提供质量问答的链接.

范围是什么?

此引用适用于以下语言:,,,,,,.

这可能过于宽泛,但这些语言共享相同的语法.对于特定功能,它背后的语言标签,例如:

  • 什么是正则表达式平衡组?

regex

52
推荐指数
1
解决办法
11万
查看次数

如何用javascript/jquery替换url参数?

我一直在寻找一种有效的方法来做到这一点,但一直无法找到它,基本上我需要的是给定这个url例如:

http://localhost/mysite/includes/phpThumb.php?src=http://media2.jupix.co.uk/v3/clients/4/properties/795/IMG_795_1_large.jpg&w=592&aoe=1&q=100
Run Code Online (Sandbox Code Playgroud)

我希望能够src使用javascript或jquery使用其他值更改参数中的URL ,这可能吗?

提前致谢.

javascript url jquery url-parameters

51
推荐指数
7
解决办法
11万
查看次数

正则表达式中的递归模式

这与正则表达式非常相关,以匹配外部括号,但是,我特别想知道如何或是否可以执行此正则表达式的递归模式我还没有找到使用这个策略的python示例,所以认为这应该是一个有用的问题!

我已经看到 了一些 索赔 递归的模式可以用来匹配平衡括号,但使用Python的没有例子正则表达式包(注:重支持递归模式,你需要使用正则表达式).

一种说法是语法在b(?:m|(?R))*e哪里:

b是什么开始构造,m是什么可以发生在构造的中间,并且e是在构造的末尾可以发生的


我想在以下内容中提取外部大括号的匹配项:

"{1, {2, 3}} {4, 5}"
["1, {2, 3}", "4, 5"]  # desired
Run Code Online (Sandbox Code Playgroud)

请注意,对于括号,这很容易做到:

re.findall(r"{([^{}]*)}", "{1, {2, 3}} {4, 5}")
['2, 3', '4, 5']
Run Code Online (Sandbox Code Playgroud)

(在我的例子中,我使用的是finditer(在匹配对象上),请看这里.)

所以我曾希望以下或某些变体可行:

regex.findall(r"{(:[^{}]*|?R)}", "{1, {2, 3}} {4, 5}")
regex.findall(r"({(:[^{}]*|?R)})", "{1, {2, 3}} {4, 5}")
regex.findall(r"({(:.*|(?R))*})", "{1, {2, 3}} {4, 5}")
regex.findall(r"({(:.*)|(?R)*})", …
Run Code Online (Sandbox Code Playgroud)

python regex recursive-regex

47
推荐指数
2
解决办法
2万
查看次数