GVKun编程网logo

使用 Python regex(使用代理ip)

1

以上就是给各位分享使用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)

使用 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 覆盖?

如何解决.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 不是事实),第二个是因为它导致了一个独立的大型项目 ,其主要任务是将表达式转换为代码。正如他们所说,还有一个交叉点搜索,但是:

  1. 事实上,我可以毫无问题地驱动 ECMA 及其功能;
  2. 隔离和优化交叉点查找部分可能很棘手;
  3. 对我来说,只有十字路口不够

那么,有没有办法比较 .NET (C#) 中的两个 ECMA 正则表达式并找出哪个覆盖另一个?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

java, split(regex) 和 split(regex, limit)用法

java, split(regex) 和 split(regex, limit)用法

limit是正整数时表示分割成几个字串,先分割前面的

limit是负整数时表示完全分割,子串可能会是""

limit是0时,与split("分割符")同义,子串不会是""

String str = "a,b,c,,";
  • String[] strAry = str.split(",");
  • System.out.print(strAry.length);
  • System.out.println(Arrays.asList(strAry));
  • String[] strAry0 = str.split(",",0);
  • System.out.print(strAry0.length);
  • System.out.println(Arrays.asList(strAry0));
  • String[] strAry1 = str.split(",",1);
  • System.out.print(strAry1.length);
  • System.out.println(Arrays.asList(strAry1));
  • String[] strAry2 = str.split(",",2);
  • System.out.print(strAry2.length);
  • System.out.println(Arrays.asList(strAry2));
  • String[] strAry_1= str.split(",",-1);
  • System.out.print(strAry_1.length);
  • System.out.println(Arrays.asList(strAry_1));
  • String[] strAry_2 = str.split(",",-2);
  • System.out.print(strAry_2.length);
  • System.out.println(Arrays.asList(strAry_2));
  • 3[a, b, c]
    3[a, b, c]
    1[a,b,c,,]
    2[a, b,c,,]
    5[a, b, c, , ]
    5[a, b, c, , ]

    以上基于jdk1.8

    JavaScript 中的 RegEx:解析 Python 导入

    JavaScript 中的 RegEx:解析 Python 导入

    如何解决JavaScript 中的 RegEx:解析 Python 导入

    我有一个可能的 Python 导入语句列表,我需要在 JavaScript 中解析它们。我找到了这篇文章 regex to parse import statements in python 并将其用于 JavaScript,但由于某种原因,并非所有语句都被解析。

    测试如下:

    1. const re = /^(?:from[ ]+(\\S+)[ ]+)?import[ ]+(\\S+)(?:[ ]+as[ ]+\\S+)?[ ]*$/g;
    2. const lines = [''import numpy as np'',''import pandas as pd'',''import pkg.mod1,pkg.mod2'',''from pkg.mod2 import Bar as Qux'',''from abc.lmn import pqr'',''from abc.lmn import pqr as xyz'',''import mod'',''from mod import s,foo'',''from mod import *'',''from pkg.mod3 import *'',''from mod import s as string,a as alist'',''import re,json''];
    3. for (var i = 0; i < lines.length; i++){
    4. const res = re.exec(lines[i]);
    5. console.log(res);
    6. }

    理想情况下,代码会提取需要加载的包(不是模块)的名称,但如果它至少适用于所有示例,那就没问题了。

    理想的预期结果:

    解决方法

    你可以使用这个正则表达式:

    1. /^(?:from\\s+(\\w+)(?:\\.\\w+)?\\s+)?import\\s+([^\\s,.]+)(?:\\.\\w+)?/

    RegEx Demo

    代码:

    1. const lines = [''import numpy as np'',''import pandas as pd'',''import pkg.mod1,pkg.mod2'',''from pkg.mod2 import Bar as Qux'',''from abc.lmn import pqr'',''from abc.lmn import pqr as xyz'',''import mod'',''from mod import s,foo'',''from mod import *'',''from pkg.mod3 import *'',''from mod import s as string,a as alist'',''import re,json''];
    2. const re = /^(?:from\\s+(\\w+)(?:\\.\\w+)?\\s+)?import\\s+([^\\s,.]+)(?:\\.\\w+)?((\\s*,\\s*\\w+)*$)?/;
    3. var results = []
    4. lines.forEach(el => {
    5. var m = el.match(re);
    6. if (m)
    7. results.push(m[1] === undefined ? m[2] + (m[3] === undefined ? "" : m[3]) : m[1]);
    8. });
    9. console.log(results);

    ,

    你可以试试,但不要匹配你的最后一行,因为你编辑了(最后更新)

    1. const re = /(import|from)\\s+([^\\s\\.]+)/;
    2. const lines = [
    3. ''import numpy as np'',a as alist''
    4. ];
    5. for (var i = 0; i < lines.length; i++){
    6. // console.log(lines[i]);
    7. const res = re.exec(lines[i]);
    8. console.log(res[2]);
    9. }

    更容易解释你的无效。

    (import|from) : 以 import 或 from 开头

    \\s+ : 一个或多个空格

    [^\\s.]+ : 每个字符不是空格也不是点

    注意循环中的 /g

    Why does a RegExp with global flag give wrong results?

    更新以匹配您的最后一行

    1. const re = /(import|from)\\s+([^\\.]+?[^,])(\\s|\\.|$)/;

    只是正则表达式,我没有将最后一个放在数组中,因为您应该知道并且您已经有了另一个答案。

    ,

    这样就够了吗? /(?:import|from)\\s+(\\w+)/

    Pandas Python Regex:错误:无需重复

    Pandas Python Regex:错误:无需重复

    我有一个带有几个奇怪字符“ *”和“-”的数据框。

    import pandas as pdimport numpy as npdata = {''year'': [2010, 2011, 2012, 2011, 2012, 2010, 2011, 2012],        ''team'': [''Bears'', ''Bears'', ''Bears'', ''Packers'', ''Packers'', ''Lions'',     ''Lions'', ''Lions''],        ''wins'': [11, ''*'', 10, ''-'', 11, 6, 10, 4],        ''losses'': [5, 8, 6, 1, 5, 10, 6, 12]}football = pd.DataFrame(data, columns=[''year'', ''team'', ''wins'', ''losses''])

    我想用‘0.00’替换奇怪的字符,但出现错误-

    error: nothing to repeat

    我了解这与正则表达式有关,但我仍然不知道如何解决该问题。

    我用来替换字符的代码:

    football.replace([''*'',''-''], [''0.00'',''0.00''], regex=True).astype(np.float64)

    答案1

    小编典典

    * 是正则表达式中的特殊字符,您必须对其进行转义:

    football.replace([''\*'',''-''], [''0.00'',''0.00''], regex=True).astype(np.float64)

    或使用字符类:

    football.replace([*-], ''0.00'', regex=True).astype(np.float64)

    关于使用 Python regex使用代理ip的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于.NET:检查一个 ECMA-Regex 是否完全被另一个 ECMA-Regex 覆盖?、java, split(regex) 和 split(regex, limit)用法、JavaScript 中的 RegEx:解析 Python 导入、Pandas Python Regex:错误:无需重复的相关知识,请在本站寻找。

    本文标签: