nutch - 如何修复替换正则表达式标志组件中的错误?
问题描述
我使用的是 nutch 1.14,因为我使用的是 GCS 索引器。这是我在 nutch-site.xml 中的内容
<property>
<name>index.replace.regexp</name>
<value>
urlmatch=.*example.com\/[a-zA-Z0-9-]+
url:category=/https:\/\/www.example.com\/([a-zA-Z0-9-]+)/$1/
</value>
</property>
我收到错误消息:
$ grep 'replace' logs/hadoop.log
ERROR replace.ReplaceIndexer - Pattern
url:category=/https:\/\/www.example.com\/([a-zA-Z0-9-]+)/$1/, has invalid flags component
当我将 nutch-site.xml 中的行更改为:
-url:category=/https:\/\/www.mydomain.com\/([a-zA-Z0-9-]+)/$1/2
我想在类别中获取部分 url。例如:如果 url 是https://www.example.com/testcategory,我喜欢类别为 testcategory
谢谢。
解决方案
如果我理解正确,您想获取域(example.com)之后的内容并将其放在类别字段中,对吗?
在这种情况下,您的正则表达式中有错误。您想要捕获所有内容,example.com/<category>
然后您需要配置您的urlmatch
喜欢:
urlmatch=.*example\.com\/([a-zA-Z0-9-]+)
在这种情况下([a-zA-Z0-9-]+)
,将创建一个可通过$1
. 然后你可以像这样设置字段:
url:category=$1
这将获取捕获组捕获的内容并将其放置在一个category
字段中。
您可以在https://regex101.com/r/bMLqOq/1中测试正则表达式。
推荐阅读
- c# - 如何在 UWP 中将键盘加速器文本向右对齐?
- jenkins - 从詹金斯从詹金斯管道作业发送获取请求的问题
- visual-studio-2019 - VS2019中如何解除Sonar服务器与项目的绑定?
- .net-core - 如何在 Discord.NET 中通过公会 ID 和频道 ID 发送消息
- java - Java if-else结构优化
- angular - 具有本地化 Angular 应用程序的 IIS
- matlab - 如何在经纬度地图上绘制数组?
- string - Flutter Dropdown Button错误:参数类型'void Function(String)'不能分配给参数类型'void Function(String?)?
- c# - 从 DatePicker (WPF) 到日期 (yyyy-MM-dd) 的 C# 字符串
- javascript - TypeError:无法读取 null Discord.js 错误的属性“硬币”