regex - 在perl中查找所有文本匹配正则表达式时如何解决问题?
问题描述
我想在给定的字符串上获取与日期正则表达式匹配的所有文本,但我没有得到预期的结果
我有这样的字符串“Lomba lari akan diadakan pada tanggal 15 Agustus 2019”
@dates2 = $line =~ m/(\d{1,2}\s(Januari|Februari|Maret|April|Mei|Juni|Juli|Agustus|September|Oktober|November|Desember)\s\d{4})/g;
$length2 = @dates2;
print "@dates2\n";
print "Length 2 : $length2\n";
$date_occurence += $length2;
我只想在数组 dates2 中得到“15 Agustus 2019”,但我得到了“15 Agustus 2019”和“Agustus”。任何人都可以告诉我匹配正则表达式代码是如何工作的?
解决方案
Agustus
由于月份交替(Januari|...|Desember)
是一个捕获组,您将进入输出。要删除它,只需使您的内部交替不捕获即
(?:Januari|Februari|Maret|April|Mei|Juni|Juli|Agustus|September|Oktober|November|Desember)
推荐阅读
- php - 带有 Where 子句 PHP 的 Parse Server 的 GET api
- php - 使用 Curl 和 PHP 将文件发送到 Anonfile
- c - 从 C 中的文件中读取 ASCII 字符
- apache-spark - Spark Streaming Job 内存使用量随时间增加
- c# - 在 C# 中构建 UWP TabView (Microsoft.Toolkit.Uwp.UI.Controls;)
- python - TypeError: input() 接受 0 个位置参数,但给出了 1 个
- javascript - 为什么“this”关键字在以下 html 代码中不起作用?
- javascript - PHP不会发布值表
- php - 如何解决错误 Column not found: 1054 Unknown column '_token' in 'field list' (SQL: update?
- symfony - Symfony 4 和 Nelmio CORS Bundle 的 CORS 错误