让我用一个例子解释我的查询:
从网站上捕获网页名称。由于设计原因,页面名称可以有不同的长度: 它可以是
我需要编写一个在所有上述场景中都能实现的正则表达式。我之前的用户共享以下内容:
/(.*?)\|(.*?)\|(.*?)\|(.*)/gm;
当字符串总是四个组时,上面的效果很好,中间有一个空白。但如果我只有两个值,则正则表达式失败。任何用户都可以指导吗?
答案 0 :(得分:0)
不确定你的意思,但这有帮助吗?但它只接受字母数字值和空格
/([a-zA-Z 0-9]{1,}\|){1,}[a-zA-Z 0-9]{1,}/g
答案 1 :(得分:0)
预计会减少两个数据字段,最多4个字段
/(?:([^|]*)\|){1,3}([^|]*)/gm;
如果您还只想要一个字段(无管道):
/(?:([^|]*)\|){,3}([^|]*)/gm;
{n,m}表示允许重复n次多次
请注意我使用[^|]*
代替.*?
的方法,因此我匹配管道|
以外的任何内容,我也使用非匹配组 {{1}所以包含管道的组是不可见的,即你可以在