如何修复替换正则表达式标志组件中的错误?

时间:2019-01-24 16:09:06

标签: nutch

由于我使用的是GCS索引器,因此我使用的是1.14。这是我在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

谢谢。

1 个答案:

答案 0 :(得分:0)

如果我正确理解,您想获取域名(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中测试正则表达式。