标签: capturing-group

如何使用javascript正则表达式从字符串中获取域

正如标题所示,我正在尝试使用javascript正则表达式从字符串中检索域.

请使用以下字符串:

String                                  ==>     Return
"google"                                ==>     null
"google.com"                            ==>     "google.com"
"www.google.com"                        ==>     "www.google.com"
"ftp://ftp.google.com"                  ==>     "ftp.google.com"
"http://www.google.com"                 ==>     "www.google.com"
"http://www.google.com/"                ==>     "www.google.com"
"https://www.google.com/"               ==>     "www.google.com"
"https://www.google.com.sg/"            ==>     "www.google.com.sg"
"https://www.google.com.sg/search/"     ==>     "www.google.com.sg"
"*://www.google.com.sg/search/"         ==>     "www.google.com.sg"
Run Code Online (Sandbox Code Playgroud)

我已经读过 "Regex找到没有www的域名 - Stack Overflow""从字符串中提取根域名 - Stack Overflow" 但它们太复杂了,所以我尝试编写自己的正则表达式:

var re = new RegExp("[\\w]+[\\.\\w]+");
/[\w]+[\.\w]+/
re.exec(document.URL);
Run Code Online (Sandbox Code Playgroud)

它工作正常"google.com","www.google.com""www.google.com.sg"而是返回http"http://google.com/","http://www.google.com/"

由于我是正则表达的新手,我似乎无法弄清楚出了什么问题......任何想法?

提前致谢!

javascript regex string string-matching capturing-group

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

正则表达式摆脱捕获组

我有以下正则表达式: (?i)p\w+@t(-)?\w+(-\w+)?(\.\w+)?\.at匹配数据,如

papFoo@t-bar.at
PapBar@tfoo.ring.at
Run Code Online (Sandbox Code Playgroud)

如何重写此正则表达式以使用非捕获组?

  • [?i]p\w+@t[-]?\w+[-\w+]?[\.\w+]?\.at 将不再匹配任何结果
  • (?:?i)p\w+@t(?:-)?\w+(?:-\w+)?(?:\.\w+)?\.at 同样在这里

即我(?i)p应该可写,?ip但在https://regex101.com上我尝试使用(?:?i)p\w+@t(?:-)?\w+(?:-\w+)?(?:\.\w+)?\.at非捕获组时只会出错.

最后python3应该评估正则表达式.

python regex capturing-group

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

Javascript regEx 删除除特殊字符之外的所有括号

我需要一个正则表达式来删除字符串中的所有(and ,除了两个 @ 之间的那些。)

例子:

( [15] == @value 1@ || [15] == @value 2@ )  &&  ( [5] == @value 3 (ignore these)@ || [5] == @value 4@ )  ||  ( [2] == @value 5@ )
Run Code Online (Sandbox Code Playgroud)

我需要的字符串:

[15] == @value 1@ || [15] == @value 2@  &&  [5] == @value 3 (ignore these)@ || [5] == @value 4@  ||  [2] == @value 5@ 
Run Code Online (Sandbox Code Playgroud)

我尝试用这个非捕获组来用空格分割,除了 @ 之间的空格,但找不到方法:

(?:@[^@]*@|\S)
Run Code Online (Sandbox Code Playgroud)

我面临着解决这个问题的压力,非常感谢您的帮助,谢谢。

javascript regex capturing-group

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

Javascript 正则表达式捕获组至少包含 1 个非数字的两种形式:用空格分隔并用引号引起来

我正在尝试将category_id 用作纯数值,这有效。我还需要捕获category_name。对于category_name,我需要捕获直到空格或包含空格(如果它以双引号开头)。

用户输入字符串示例:

python c:192 c:1Stackoverflow c:"Stack Overflow2"
Run Code Online (Sandbox Code Playgroud)

所需的捕获应该是category_name 的这两个值和category_id 的192 值。

预期输出:

1Stackoverflow
Stack Overflow2
Run Code Online (Sandbox Code Playgroud)

Category_name 必须至少包含一位非数字,但可以是全字母且不含数字。

查询部分有效

python c:192 c:1Stackoverflow c:"Stack Overflow2"
Run Code Online (Sandbox Code Playgroud)

它不捕获输入1Stackoverflow,但捕获引用的输入。我需要删除引号:

1Stackoverflow
Stack Overflow2
Run Code Online (Sandbox Code Playgroud)

?!\d+是一种避免与category_id发生冲突的尝试,但似乎不起作用。

如何以两种形式(一个单词和引号分隔)捕获category_name,而不在捕获中使用引号并使用前导数字?

javascript regex capturing-group

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

Vala 中的正则表达式捕获组

有这样的事情吗?我一直在查看 Vala API 并且 Regex 对象似乎不支持捕获组,以便我以后可以引用它们。目前有没有办法绕过这个明显的限制?假设我正在从一组字符串(文件的内容)中解析一个字符串,以获得给定的模式,例如:

参数 = 值

但我希望语法宽松,这样它也可以说

 参数=值
或者
参数 = 值
等等...我想到的第一个想法是使用带有捕获组的正则表达式,但据我所知,目前似乎不支持将此功能作为 Vala 的一部分。

我能想出的唯一替代方法是使用匹配空格的正则表达式拆分字符串,以便我最终得到一个可以分析的数组,但该文件可能不仅包含类似“参数 = 值”的格式行。

regex vala capturing-group

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

在Python中捕获正则表达式

我想在Python中使用正则表达式来获取</html>标记之后的所有内容,并将其放在字符串中.所以我试着理解如何在Python中实现它,但我无法使其工作.谁能解释我怎么做这个荒谬的简单任务?

python regex capturing-group

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

正则表达式仅匹配完整条件,但它应该以较少的搜索引擎结算

一如既往,我是世界上最差的正则表达者.但这次我真的尝试过.

所以我的目标是制作一个处理搜索相关内容的正则表达式.搜索查询可能是这样的:

  • 堆栈溢出
  • "堆栈溢出"
  • title ="堆栈溢出"
  • type:image title =堆栈溢出
  • stackoverflow类型:图像
  • status:关闭类型:图像标题:堆栈溢出

但它应该能够分别检测它们.它应该能够检测直接匹配的引用.只有标题,必须在它后面有搜索查询,但其他条件可以是任何顺序.

现在我很困难..我设法做了这个正则表达式.它仅适用于状态:封闭类型:图像标题:堆栈溢出.()thingis 之间的点使它工作.如果我用|替换它,那么我得到第一部分匹配.但是,对于我而言,使用所有可能的查询格式来实现此功能是不可行的.

/(?:(?:status[:](closed|open)).(?:type[:](image|video)).(?:(?:title|author|actor|movie)[:](.+)))/i
Run Code Online (Sandbox Code Playgroud)

下面是工具,我试图做这一切:http://regexr.com/39an1我的涂鸦就在那里了.

这是针对搜索引擎类型的东西.所以我希望从匹配中获得结果,在PHP中很容易使用.此外,我认为有人可以从中受益,它会有一个解决方案.

如果有人能指出我的话,至少点对点 主要的()东西之间.感觉就像| =或者,但我想要有点像和/或东西.

php regex string template-matching capturing-group

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

如何将正则表达式中的命名组分配给局部变量

我试图将我的正则表达式匹配的命名组分配给局部变量。例如,我试图捕获日期输入的字符串并引用命名组monthday局部变量:

input = "2015-01-24" 
expr = /\d{4}-(?<month>\d{2})-(?<day>\d{2})/ 
input =~ expr #=> 0
Run Code Online (Sandbox Code Playgroud)

但是,month或者day是匹配后未定义的变量。我如何访问monthday作为局部变量?

根据Ruby doc,输入组变量名称将返回捕获的值(在本例中为“美元”)

/\$(?<dollars>\d+)\.(?<cents>\d+)/ =~ "$3.67" #=> 0 
dollars #=> "3"
Run Code Online (Sandbox Code Playgroud)

我也很感激任何推荐的资源。

ruby regex capturing-group

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

正则表达式 - 捕获所有重复的迭代

我有一个像这样的变量

var = "!123abcabc123!"
Run Code Online (Sandbox Code Playgroud)

我试图捕获此变量中的所有'123'和'abc'.

这个正则表达式(abc|123)检索我想要的但是......

我的问题是:当我尝试这个正则表达式时,!(abc|123)*!它只检索最后一次迭代.我该怎么做才能得到这个输出

MATCH 1
1.  [1-4]   `123`
MATCH 2
1.  [4-7]   `abc`
MATCH 3
1.  [7-10]  `abc`
MATCH 4
1.  [10-13] `123`
Run Code Online (Sandbox Code Playgroud)

https://regex101.com/r/mD4vM8/3

谢谢!!

regex capturing-group

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

为什么 Perl 正则表达式捕获组在“打印”和算术运算之间的行为不同?

在 Perl (v5.30.0) 中,正则表达式被评估为捕获,当用作参数时print()

# Simplified example; the real case has more text, and the capture covers only part of it.

echo $'1\n2\n3' | perl -ne 'print /(.)/'
# 123
Run Code Online (Sandbox Code Playgroud)

这对于文本提取非常有用。我想利用算术运算的相同便利,但这并不能按预期工作:

# Attempt to compute a sum of the int value of the captures
#
echo $'1\n2\n3' | perl -ne '$tot += /(.)/; END { print $tot }'
# 3

# Attempt to print twice the int value of each capture
#
echo $'1\n2\n3' | perl -ne 'print(/(.)/ …
Run Code Online (Sandbox Code Playgroud)

regex perl text-processing capturing-group

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