标签: regex-group

字符串替换时单词中的撇号无法识别

我在用正则表达式替换“you\re”一词时遇到问题。

\n\n

所有其他单词都正确更改,只是单词"you\'re"。\n我认为它在撇号之后没有解析。

\n\n

我必须将单词“you”替换为“I”,将“you\'re”替换为“I\'m”。\n这会将“you”更改为“I”,但“you\re”会变为“I\” 're'因为它没有超过撇号,并且由于某种原因它认为这是单词的结尾。我必须以某种方式逃避撇号。

\n\n

请参阅下面的相关代码。

\n\n
package main\n\nimport (\n    "fmt"\n    "math/rand"\n    "regexp"\n    "strings"\n    "time"\n)\n\n//Function ElizaResponse to take in and return a string\nfunc ElizaResponse(str string) string {\n\n    //  replace := "How do you know you are"\n\n    /*Regex MatchString function with isolation of the word "father"\n    *with a boundry ignore case regex command.\n     */\n    if matched, _ := regexp.MatchString(`(?i)\\bfather\\b`, str);\n …
Run Code Online (Sandbox Code Playgroud)

regex go regex-group

1
推荐指数
1
解决办法
921
查看次数

在 Blue Prism 中提取正则表达式值(正则表达式匹配)

在 Blue Prism 中,我需要识别数据项(文本)的特定元素,以便稍后在我的流程中使用该信息。

\n\n

文本字符串如下:

\n\n
\n

REKVISITION_NR: 1234567 拿督: 23-07-2018 Rekvirent: ABC, DEF GHI, JKL 60, 8600 MNO Sted: JKL 60, 8600 MNO, Kl.:14:00:00, Bestilt_tid: 60 分钟 Tolkensnavn: PQR STU Koert_fra: VXY , 8600 Silkeborg Vedr.:Z CPR:123456-7890 Sprog:Arabisk 类型:Personlig fremm\xc3\xb8de Godkendt:24-07-2018

\n
\n\n

正如您所看到的,每个元素都具有以下特征(例如Kl. :14:00:00Sprog :arabisk):

\n\n
    \n
  • 字符串名称(以大写字母开头)
  • \n
  • 可选的句点字符 (.)
  • \n
  • 冒号字符 (:)
  • \n
  • 可选的,空格字符 ( )
  • \n
  • 字符串的值部分
  • \n
  • 空格字符 ( ),后跟下一个元素。
  • \n
\n\n

我相信我应该使用业务对象实用程序 - Strings \' 操作Extract …

regex regex-group blueprism

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

具有可选捕获组的正则表达式

我知道还有其他具有相同标题的问题,但我无法在其中找到答案。

我有一个字符串,可能是/action或者/action{key:value} 我正在尝试获取action,keyvalue变量。

我尝试过几种正则表达式,它们是此正则表达式的变体: /^\/(.*?)(\{(.*)\:(.*)\})?/

/^\/(.*?)\{(.*)\:(.*)\}/ 匹配/action{key:value}但不匹配/action

/^\/(.*)(\{(.*)\:(.*)\})?/(将捕获组声明为可选)匹配/action但不匹配/action{key:value}(它捕获所有内容)

因此,如果我将第一组声明为惰性组:

/^\/(.*?)(\{(.*)\:(.*)\})?/它不再匹配任何东西了。

我知道我已经接近解决方案,但我肯定误解了一些基本的东西:)

javascript regex regex-group

1
推荐指数
1
解决办法
6867
查看次数

JavaScript 使用正则表达式和偏移量开始

我正在做一些字符串解析并想使用正则表达式。我正在迭代字符串,并希望使用正则表达式和偏移量应用诸如“startsWith”之类的内容,如果找到则返回匹配项,否则返回 null。在伪 JavaScript 中:

function startsWith(string, regex, offset) {
    if (regex_matches_at_offset) {
        return match;
    } else {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

一个简单直接的解决方案是先应用子字符串,然后匹配。但我想要使用正则表达式的“startsWith”之类的东西。

如果它是一个字符串而不是正则表达式,我会选择startsWith

function startsWith(string, other_string, offset) {
    let starts_with=s.startsWith(other_string, offset); // startsWith from position offset onwards, as other_string has fixed length the "match" is also known
    if (starts_with) {
        return other_string; // other_string = match
    } else {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

但对于正则表达式,我当前的解决方案(仅用于测试目的)如下所示:

function startsWith(string, regex, offset) {
    let end_part=s.substring(offset); // Substring, performance issue
    let match=end_part.match(regex); // Match …
Run Code Online (Sandbox Code Playgroud)

javascript regex string performance regex-group

1
推荐指数
1
解决办法
2723
查看次数

小数的正则表达式在 flutter TextFormField inputFormatters 中不起作用

正则表达式的要求:

  • 号码的最大长度为 12 个字符
  • 如果数字中有小数点,则用户最多可以在小数点后添加 4 位数字,最少添加 1 位数字。
  • 有效输入: - 222244445555、22223333.3333、5555.33、1.2、0.33、11112222333.3
  • 无效输入:22.、.11、2222333344443、444445555544.、333344445.1234

我尝试在RegExr上生成相同的正则表达式,它满足了我的要求,但是当我将相同的内容应用于颤动表单 TextFormField 时,它不起作用。

正则表达式: ^[[0-9]{0,8}(\.[0-9]{1,4})?$|^[[0-9]{0,9}(\.[0-9]{1,3})?$|^[[0-9]{0,10}(\.[0-9]{1,2})?$|^[[0-9]{0,11}(\.[0-9]{1})?$|^[0-9]{0,12}

颤振文本字段代码:

TextFormField(
   controller: _textEditingController,
   keyboardType:TextInputType.numberWithOptions(decimal: true),
   inputFormatters: <TextInputFormatter>[
          WhitelistingTextInputFormatter(RegExp(r'^[[0-9]{0,8}(\.[0-9]{1,4})?$|^[[0-9]{0,9}(\.[0-9]{1,3})?$|^[[0-9]{0,10}(\.[0-9]{1,2})?$|^[[0-9]{0,11}(\.[0-9]{1})?$|^[0-9]{0,12}')),
   ],
),
Run Code Online (Sandbox Code Playgroud)

使用上面的代码我无法dot(.)在 TextFormField 中输入。

注意:用户不应在 中输入多于一位小数的数字TextFormField

regex regex-group dart flutter

1
推荐指数
1
解决办法
5713
查看次数

Extractall 日期 - 如何在 python 中使用 RegEx 分隔单个年份?

我在数据框中的一列中的测试中包含了一些日期。例如,

sr = pd.Series(['04/20/2009', '04/20/09', '4/20/09', '4/3/09', '6/2008','12/2009','2010'])
Run Code Online (Sandbox Code Playgroud)

我想提取这些日期......我一年中有一半的时间在“月”和“日”列中结束。

result = sr.str.extractall(r'(?P<month>\d{,2})[/]?(?P<day>\d{,2})[/]?(?P<year>\d{2,4})')
result

      month day year
  match         
0   0   04  20  2009
1   0   04  20  09
2   0   4   20  09
3   0   4   3   09
4   0   6   20  08
5   0   12  20  09
6   0   20  NaN 10

Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

我只能想到将“'6/2008'、'12/2009'、'2010'”与“'04/20/2009'、'04/20/09'、'4/20/09'”分开处理,然后附加它们。

regex date regex-group python-3.x pandas

1
推荐指数
1
解决办法
69
查看次数

在正则表达式中使用组时 re.findall() 和 re.finditer() 之间的区别?

考虑以下字符串

text2 = '''
Mr. Schafer
Mr Smith
Ms Davis
Mrs. Robinson
Mr. T
'''
Run Code Online (Sandbox Code Playgroud)

我希望正则表达式能够匹配完整的姓名,例如“先生”。以谢弗为例

使用 finditer():

matches = re.finditer(r'(Mr|Ms|Mrs)\.?\s[A-Z]\w*', text2)
for match in matches:
    print(match)
Run Code Online (Sandbox Code Playgroud)

结果:

<_sre.SRE_Match object; span=(1, 12), match='Mr. Schafer'>
<_sre.SRE_Match object; span=(13, 21), match='Mr Smith'>
<_sre.SRE_Match object; span=(22, 30), match='Ms Davis'>
<_sre.SRE_Match object; span=(31, 44), match='Mrs. Robinson'>
<_sre.SRE_Match object; span=(45, 50), match='Mr. T'>
Run Code Online (Sandbox Code Playgroud)

finditer() 给出了我想要的结果,但不在列表中。

但是当我使用 findall() 时:

re.findall(r'(Mr|Ms|Mrs)\.?\s[A-Z]\w*', text2)
Run Code Online (Sandbox Code Playgroud)

结果:

['Mr', 'Mr', 'Ms', 'Mrs', 'Mr']
Run Code Online (Sandbox Code Playgroud)

为什么是这样?如何使用 findall() 获得我想要的结果
我想要这个结果:

['Mr. Schafer', 'Mr Smith', 'Ms …
Run Code Online (Sandbox Code Playgroud)

python regex text regex-group

1
推荐指数
1
解决办法
1403
查看次数

我可以使用re.sub(或regexobject.sub)替换子组中的文本吗?

我需要解析一个看起来像这样的配置文件(简化):

<config>
<links>
<link name="Link1" id="1">
 <encapsulation>
  <mode>ipsec</mode>
 </encapsulation>
</link>
<link name="Link2" id="2">
 <encapsulation>
  <mode>udp</mode>
 </encapsulation>
</link>
</links>
Run Code Online (Sandbox Code Playgroud)

我的目标是能够更改特定链接的参数,但是我无法让替换正常工作.我有一个正则表达式,可以隔离特定链接上的参数值,其中值包含在捕获组1中:

link_id = r'id="1"'
parameter = 'mode'
link_regex = '<link [\w\W]+ %s>[\w\W]*[\w\W]*<%s>([\w\W]*)</%s>[\w\W]*</link>' \
% (link_id, parameter, parameter)
Run Code Online (Sandbox Code Playgroud)

从而,

print re.search(final_regex, f_read).group(1)
Run Code Online (Sandbox Code Playgroud)

打印ipsec

正则表达式中的示例似乎都假设人们想要在替换中使用捕获组,但我需要做的是替换捕获组本身(例如,将Link1模式从ipsec更改为udp).

python regex regex-group

0
推荐指数
1
解决办法
441
查看次数

如何使用Ruby的'scan'方法创建捕获组可选?

我有这样的正则表达式:

(.*?)("DisplayName":.*?)(,)(.*?"Groups":?)?(\[.*?\])?(,)(.*?"Phones":)?(\[.*?\])?(.*?\},)?
Run Code Online (Sandbox Code Playgroud)

我想用它来处理这样的字符串:

{"Affinity":20,"DisplayName":"Moe Larry","电子邮件":[{"Address":"moelarry@gmail.com","Primary":true,"Type":{"Id":" HOME"}},"FullName":{"FamilyName":"Larry","GivenName":"Moe","Unstructured":"Moe Larry"},"Groups":[{"id":"^ Mine "}","Id":"1234567890","MailsS​​ent":0,"名称":"Moe Larry","电话":[{"数字":"555-999-6661","类型":{ "ID": "移动设备"}}], "ProfileLink": ""},{ "亲和力":20, "显示名称": "stoogesarefunny", "电子邮件":[{ "地址": "stoogesarefunny","主":真}]," EvergreenPhoto ":"/照片/私人/ adflk; jsd394u75430o8752380974321jtkasdljf8937489213749832654" , "ID": "834754hthbf83744823f", "MailsS​​ent":0},{ "亲和力":20, "显示名称":"stoogesarefunny @ gmail.com " "电子邮件":[{ "地址": "stoogesarefunny@gmail.com", "主":真正}], "EvergreenPhoto": "/照片/私营/ asdfAJDKLJSFIOEJHLTHSJKLDF234987s897KJHSDFKJHDF89273473ASLKJDLSKJIFEIH", "ID":" 834754hthbf83744823f ","MailsS​​ent":0,"ProfileLink":" https://profiles.google.com/stoogesarefunny "},{"Affinity":20,"DisplayName":"Shemp","FullName":{"GivenName" : "Shemp" "非结构化": "Shemp"}, "组":[{ "ID": "^矿"}], "ID": "1234567890", "MailsS​​ent":0, "名": "Shemp","手机":[{"号码":" + 15553085671" , "类型":{ "ID": "OTHER"}}]},{ "亲和力":20, "显示名称": "ClownFace", "全名":{ "给定名称": "ClownFace", "非结构化": "ClownFace"}, "组":[{ "ID": "^矿"}], "ID": "1234567890", "MailsS​​ent":0,"名称":" ClownFace", "电话":[{ "号码": …

ruby regex regex-group capturing-group

0
推荐指数
1
解决办法
177
查看次数

如何在C#中将字符串中的所有内容捕获到单独的组中?

我在文件中有一些数据,并且我正在使用这些数据Regex来获取单个元素并删除和标记\r\n之间的所有内容。<opening></closing>

但是,当我尝试elements单独选择时,最后,整个数据将被选为一组。

这是我的正则表达式:

(<([ph0-9figc]+)>)([a-zA-Z0-9äöüÄÖÜß[:punct:] \n\r\t])+(<\/\2>)
Run Code Online (Sandbox Code Playgroud)

输入数据样本

c# regex regex-group regex-greedy regex-lookarounds

0
推荐指数
1
解决办法
403
查看次数