GVKun编程网logo

javascript – RegEx:从字符串中提取子字符串,该字符串可能包含多个“{”和“}”

14

在本文中,我们将为您详细介绍javascript–RegEx:从字符串中提取子字符串,该字符串可能包含多个“{”和“}”的相关知识,此外,我们还会提供一些关于(Python)有没有办法从整个字符串中提

在本文中,我们将为您详细介绍javascript – RegEx:从字符串中提取子字符串,该字符串可能包含多个“{”和“}”的相关知识,此外,我们还会提供一些关于(Python) 有没有办法从整个字符串中提取子字符串/数字?、javascript / jquery:从字符串中提取电话号码、JavaScript RegEx使用RegExp.exec从字符串中提取所有匹配项、javascript – 从字符串中提取时间的有用信息。

本文目录一览:

javascript – RegEx:从字符串中提取子字符串,该字符串可能包含多个“{”和“}”

javascript – RegEx:从字符串中提取子字符串,该字符串可能包含多个“{”和“}”

`<html>
<head>
  <title>DailyHoroscope.com</title>
  <Meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
    {if $contact['timezone']} 
     {assign var=local_tz value=$contact['timezone']} 
    {else} 
     {assign var=local_tz value='America/New_York'} 
    {/if} 
    {assign var=tracking_params value="utm_medium={$medium}&utm_source={$source}&utm_campaign={$campaign}"}
</head>
<body>
</body>
</html>`

在这段代码中,我需要在{}中获得子串.
我正在使用这个RegEx

/\{([^}]*)\}/mig

它适用于那些只包含一个{和}的子串的类型.喜欢

{if $contact['timezone']}

但是这个字符串的含义—>

{assign var=tracking_params value="utm_medium={$medium}&utm_source={$source}&utm_campaign={$campaign}"}

我期待整个字符串作为结果,但它返回我

{assign var=tracking_params value="utm_medium={$medium},{$source} and {$campaign}

这是正确的,因为我的正则表达式在获得第一个’}后结束;有没有办法得到使用regEx包含相同数量的'{‘和’}’的字符串?什么是RegEx?

解决方法

如果您只有1级嵌套花括号,则可以使用

\{((?:[^{}]*\{[^{}]*\})*[^}]*)\}

见demo

火柴:

if $contact['timezone']
assign var=local_tz value=$contact['timezone']
else
assign var=local_tz value='America/New_York'
/if
assign var=tracking_params value="utm_medium={$medium}&utm_source={$source}&utm_campaign={$campaign}"

(Python) 有没有办法从整个字符串中提取子字符串/数字?

(Python) 有没有办法从整个字符串中提取子字符串/数字?

如何解决(Python) 有没有办法从整个字符串中提取子字符串/数字??

我有一个包含独特效用数据的元组列表,包括消耗量(立方英尺)、水加仑数和估计价格。有 13 个元组,一个用于一年中的每个月,一个用于年末的总消耗量。我的目标是提取这三条信息,将它们存储到一个数据框中,并最终将它们导出到 Excel 表格中。

这是我将它们作为字符串排序后的元组列表的样子。 (我将它们作为字符串进行迭代和排序的原因是因为它们最初是一种 Soup(BeautifulSoup) 格式并且很难组织成一个列表。)

这是一个元组的样子:

[\''<area alt="" coords="151,115,181,382" onmouSEOut="displayTooltip(\\\''\\\'');" onmouSEOver="displayTooltip(\\\''Consumption = 49,094.00 CF (367,223.12 gallons)  &lt;br /&gt; Approximate Charge = $5,073.42\\\'');" shape="rect"/>\'']''

以下是元组的完整列表。唯一的例外是最后的(第 13 个)元组列出了“总消耗”而不仅仅是“消耗”

[''[\''<area alt="" coords="113,88,143,382" onmouSEOut="displayTooltip(\\\''\\\'');" onmouSEOver="displayTooltip(\\\''**Consumption = 54,070.00 CF (404,443.60 gallons)**  &lt;br /&gt; **Approximate Charge = $5,587.65**\\\'');" shape="rect"/>\'']'',''[\''<area alt="" coords="151,073.42\\\'');" shape="rect"/>\'']'',''[\''<area alt="" coords="188,99,218,382" onmouSEOut="displayTooltip(\\\''\\\'');" onmouSEOver="displayTooltip(\\\''Consumption = 51,921.00 CF (388,369.08 gallons)  &lt;br /&gt; Approximate Charge = $5,365.57\\\'');" shape="rect"/>\'']'',''[\''<area alt="" coords="226,125,256,382" onmouSEOut="displayTooltip(\\\''\\\'');" onmouSEOver="displayTooltip(\\\''Consumption = 47,122.00 CF (352,472.56 gallons)  &lt;br /&gt; Approximate Charge = $4,869.63\\\'');" shape="rect"/>\'']'',''[\''<area alt="" coords="263,101,294,687.00 CF (386,618.76 gallons)  &lt;br /&gt; Approximate Charge = $5,341.39\\\'');" shape="rect"/>\'']'',''[\''<area alt="" coords="301,139,331,382" onmouSEOut="displayTooltip(\\\''\\\'');" onmouSEOver="displayTooltip(\\\''Consumption = 44,643.00 CF (333,929.64 gallons)  &lt;br /&gt; Approximate Charge = $4,613.45\\\'');" shape="rect"/>\'']'',''[\''<area alt="" coords="339,176,369,382" onmouSEOut="displayTooltip(\\\''\\\'');" onmouSEOver="displayTooltip(\\\''Consumption = 37,770.00 CF (282,519.60 gallons)  &lt;br /&gt; Approximate Charge = $4,010.80\\\'');" shape="rect"/>\'']'',''[\''<area alt="" coords="376,382,407,383" onmouSEOut="displayTooltip(\\\''\\\'');" onmouSEOver="displayTooltip(\\\''Consumption = 0.00 CF (0.00 gallons)  &lt;br /&gt; Approximate Charge = $0.00\\\'');" shape="rect"/>\'']'',''[\''<area alt="" coords="414,444,''[\''<area alt="" coords="452,482,''[\''<area alt="" coords="489,519,''[\''<area alt="" coords="527,557,''[\''<area alt="" coords="653,68,733,382" onmouSEOut="displayTooltip(\\\''\\\'');" onmouSEOver="displayTooltip(\\\''Total Consumption = 336,307 CF (2,515,576 gallons) &lt;br /&gt; Approximate Charge = $34,861.91\\\'');" shape="rect"/>\'']'']

我写了这个正则表达式来提取加仑:

gallons = re.search(''CF((.*)gallons)'',test_line)
print(gallons)

输出:

<re.Match object; span=(128,150),match=''CF (404,443.60 gallons''>

这并没有真正使它变得更容易,因为现在我必须找到一种方法来提取 ''404,443,.60''

如果有人可以推荐一种从元组列表中提取这三段数据的方法(假设我很可能必须在元组列表上创建某种形式的迭代)并将它们存储到一个数据帧中非常有帮助。最终目标是将这些数字存储到数据框中,并最终导出到 Excel 工作表中。

解决方法

这可能会满足您的需求:

gallons = re.search(r''(?<=CF\s\()[\d,\.]*(?= Gallons)'',test_line)
,

您可以使用捕获组,并通过匹配括号并捕获组 1 中左括号后带有可选小数部分的数字来使模式更加具体。

\bCF\s\((\d+(?:\.\d+)*(?:,\d+(?:\.\d+)*)*)\sGallons\)
  • \bCF\s 防止空匹配的单词边界,匹配 CF 和空格字符
  • \( 匹配 (
  • ( 捕获组 1
    • \d+(?:\.\d+)* 匹配 1+ 位数字和可选的小数部分
    • (?:,\d+(?:\.\d+)*)* 可选地重复匹配 , 和 1+ 位数字以及可选的小数部分
  • ) 关闭第 1 组
  • \sGallons\) 匹配一个空白字符和 Gallons)

Regex demo | Python demo

例如

import re
 
pattern=r"\bCF\s\((\d+(?:\.\d+)*(?:,\d+(?:\.\d+)*)*)\sGallons\)"
 
strings = [r''Consumption = 49,094.00 CF (367,223.12 Gallons)'']
 
for s in strings:
    m = re.search(pattern,s)
    if m:
      gallons = m.group(1)
      print(gallons)

输出

367,223.12
,

您可以获得匹配的组:

import re
re_gallons = re.compile(r''CF \((.*)Gallons\)'')
print(re_gallons.search(test_line).group(1))

javascript / jquery:从字符串中提取电话号码

javascript / jquery:从字符串中提取电话号码

我正在尝试从一个可以为空或看起来像以下示例之一的字符串中提取电话号码:

>“电话:04 27 52 12 87端口:07 67 11 06 87”
>“电话:04 27 52 12 87”
>“端口:07 67 11 06 87”

此外,电话号码可能如下所示:(0039)234786
因此,常量是“Tél.:”和/或“ Port.:”

已将这些数字放在两个变量中(小区和固定电话).

我已经尝试过split和indexOf函数,但是我很确定有一种更好,更有效的方法来做到这一点.

有任何想法吗 ?

解决方法:

如果您已经知道字符串是电话号码,则只需替换所有非数字字符即可保留电话号码:

telInteger = parseInt(inputString.replace(/[^0-9]/g,''));

这样,格式是什么都没有关系,您总是会得到数字.

如果您不知道字符串中有电话号码,而您只是在野外搜索,则可以在其他答案中使用RegEx来检测电话号码.

希望这可以帮助

JavaScript RegEx使用RegExp.exec从字符串中提取所有匹配项

JavaScript RegEx使用RegExp.exec从字符串中提取所有匹配项

如何解决JavaScript RegEx使用RegExp.exec从字符串中提取所有匹配项?

继续re.exec(s)循环调用以获取所有匹配项:

var re = /\s*([^[:]+):\"([^"]+)"/g;
var s = ''[description:"aoeu" uuid:"123sth"]'';
var m;

do {
    m = re.exec(s);
    if (m) {
        console.log(m[1], m[2]);
    }
} while (m);

解决方法

我正在尝试解析以下类型的字符串:

[key:"val" key2:"val2"]

里面有任意键:“ val”对。我想获取键名和值。对于那些好奇的人,我试图解析任务战士的数据库格式。

这是我的测试字符串:

[description:"aoeu" uuid:"123sth"]

这是要强调的是,除了空格,冒号周围没有空格而且值始终用双引号引起来,键或值中的任何内容都可以位于键或值中。

在节点中,这是我的输出:

[deuteronomy][gatlin][~]$ node
> var re = /^\[(?:(.+?):"(.+?)"\s*)+\]$/g
> re.exec(''[description:"aoeu" uuid:"123sth"]'');
[ ''[description:"aoeu" uuid:"123sth"]'',''uuid'',''123sth'',index: 0,input: ''[description:"aoeu" uuid:"123sth"]'' ]

而且description:"aoeu"也符合这种模式。如何找回所有比赛?

javascript – 从字符串中提取时间

javascript – 从字符串中提取时间

我有一个类似这样的字符串:“早上7:18”

我希望能够做的是将“718”(不是中间的冒号)和“am”提取为两个单独的变量.

我尝试过做这样的事情,但它只返回了第一个整数 – 在本例中是7.

var time = parseInt("7:18")

实现这一目标的最佳方法是什么?

解决方法:

var str = "7:18 am".split(" "),
    time = parseInt(str[0].replace(":", ""), 10),
    ampm = str[1];

console.log(time, ampm);  // 718 "am"

今天关于javascript – RegEx:从字符串中提取子字符串,该字符串可能包含多个“{”和“}”的讲解已经结束,谢谢您的阅读,如果想了解更多关于(Python) 有没有办法从整个字符串中提取子字符串/数字?、javascript / jquery:从字符串中提取电话号码、JavaScript RegEx使用RegExp.exec从字符串中提取所有匹配项、javascript – 从字符串中提取时间的相关知识,请在本站搜索。

本文标签: