以上就是给各位分享使用Pythonregex,其中也会对使用代理ip进行解释,同时本文还将给你拓展.NET:检查一个ECMA-Regex是否完全被另一个ECMA-Regex覆盖?、java,split
以上就是给各位分享使用 Python regex,其中也会对使用代理ip进行解释,同时本文还将给你拓展.NET:检查一个 ECMA-Regex 是否完全被另一个 ECMA-Regex 覆盖?、java, split(regex) 和 split(regex, limit)用法、JavaScript 中的 RegEx:解析 Python 导入、Pandas Python Regex:错误:无需重复等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:- 使用 Python regex(使用代理ip)
- .NET:检查一个 ECMA-Regex 是否完全被另一个 ECMA-Regex 覆盖?
- java, split(regex) 和 split(regex, limit)用法
- JavaScript 中的 RegEx:解析 Python 导入
- Pandas Python Regex:错误:无需重复
使用 Python regex(使用代理ip)
如何解决使用 Python regex
使用 Python 3.7,如何替换字符串中所有出现的正则表达式,但前提是出现在特定上下文中?
例如,如何将 foo
的所有实例替换为 bar
,但前提是 foo
位于大括号内?
输入:
{foo foo} foo {foofoo} foo foo
输出:
{bar bar} foo {barbar} foo foo
我使用 re.sub()
尝试了很多方法,包括使用环视,但无法找到完美运行的方法。
例如,我尝试使用捕获的组来解构和重建正则表达式:
re.sub(
r"(?P<delimiter>{)(?P<before_foo>.*)(?P<foo>foo)(?P<after_foo>.*)(?P<end_delimiter>})",r"\\g<delimiter>\\g<before_foo>bar\\g<after_foo>\\g<end_delimiter>",input
)
这只会在大括号内进行替换,但如果字符串中有多个 foo
,则会失败。
我也尝试过使用环视:
re.sub(r"foo(?!.*{)(?=.*})",bar,input)
只要字符串中只有一对花括号,这就能很好地工作,因此对于输入 {foo foo} foo
它将正确输出 {bar bar} foo
,但对于输入 {foo foo} foo {foofoo} foo foo
它会错误地输出 {foo foo} foo {barbar} foo foo
。
解决方法
一种选择,使用带有回调函数的 re.sub
:
inp = "{foo foo} foo {foofoo} foo foo"
output = re.sub(r''\\{(.*?)\\}'',lambda x: ''{'' + x.group(1).replace(''foo'',''bar'') + ''}'',inp)
print(input)
print(output)
打印:
{foo foo} foo {foofoo} foo foo
{bar bar} foo {barbar} foo foo
这里使用的策略是匹配花括号内的所有内容{...}
。然后将此内容传递给回调函数,该函数有选择地将 foo
替换为 bar
。
.NET:检查一个 ECMA-Regex 是否完全被另一个 ECMA-Regex 覆盖?
如何解决.NET:检查一个 ECMA-Regex 是否完全被另一个 ECMA-Regex 覆盖??
我有一个项目,我需要按照相对于所选表达式的“严格程度”对正则表达式进行排序。
在我的程序中,我有一组正则表达式,可以包含所有 ECMAScript 正则表达式 功能。程序本身首先检查输入字符串是否与第一个模式匹配,然后与第二个模式匹配,依此类推。将根据程序停止的模板选择操作。 图案的顺序由用户选择。我还需要,当用户在列表中选择一个模式时,程序还显示一个被选中模式覆盖的模式列表,即如果执行了所选模式将不会执行的那些模式列表。 希望我已经大致解释了我的问题是什么以及在什么情况下。
我找到了一个类似问题的答案,但它们都不适合例如,这个问题:Check if one regex covers another regex 然而,没有合适的答案。因此,answer 1 建议使用 Perl; answer 2 考虑简化语法(我需要 ECMA); answer 3 建议使用 DFA,我不知道如何为 ECMA 实现,因为我不知道 ECMA-Regex 标准的复杂性(他们有很多,我想),这很难,我想......
还有一个问题可以显示与我的相似:Regex: Determine if two regular expressions could match for the same input? 但是,这是一个如何确定两个正则表达式是否产生相同结果的问题。在某种程度上,我也需要它,但这对我来说还不够。我需要知道哪个表达式“更大”,即涵盖第二个。将它与平等进行比较对我来说还不够。另外,在接受的答案中,两个链接对我都不起作用。第一个是因为代码是用一种我不理解的语言呈现在那里(ECMA 不是事实),第二个是因为它导致了一个独立的大型项目 ,其主要任务是将表达式转换为代码。正如他们所说,还有一个交叉点搜索,但是:
- 事实上,我可以毫无问题地驱动 ECMA 及其功能;
- 隔离和优化交叉点查找部分可能很棘手;
- 对我来说,只有十字路口不够。
那么,有没有办法比较 .NET (C#) 中的两个 ECMA 正则表达式并找出哪个覆盖另一个?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
java, split(regex) 和 split(regex, limit)用法
limit是正整数时表示分割成几个字串,先分割前面的
limit是负整数时表示完全分割,子串可能会是""
limit是0时,与split("分割符")同义,子串不会是""