繁体   English   中英

正则表达式匹配(JavaScript)

[英]Regular expression matching (Javascript)

我有以下字符串: |Africa||Africans||African Society||Go Africa Go||Mafricano||Go Mafricano Go||West Africa|

我正在尝试编写一个仅与包含“ Africa ”一词或任何其衍生词(包括|Mafricano||Go Mafricano Go|上述所有术语都是)的正则表达式匹配的词,每个词都包含在两个|之间。

现在我想出了: /\\|[^\\|]*africa[^\\|]*\\|/gi ,它表示:


  1. \\| 匹配|

  1. [^\\|]*零匹配到除|之外的任何字符的无限制实​​例

  1. africa赛事africa字面上

  1. [^\\|]*零匹配到除|之外的任何字符的无限制实​​例

  1. \\| 匹配|

我尝试插入((?:\\s)|(?!\\w))使其/\\|[^\\|]*((?:\\s)|(?!\\w))africa[^\\|]*\\|/gi 尽管成功排除了|Mafricano| |Go Mafricano Go| ,也排除了除|West Africa|以外的所有其他条目|West Africa| |Go Africa Go| 因此,这很好,但它也必须包括所有单词Africa及其派生形式。

有谁能够帮助我?

您可以使用此正则表达式

[^|]*\bAfrica[a-z]*\b[^|]*

DEMO

var str = "|Africa||Africans||African Society||Go Africa Go||Mafricano||Go Mafricano Go||West Africa|";
var arr = str.match(/[^|]*\bAfrica[a-z]*\b[^|]*/g);
console.log(arr); // ["Africa", "Africans", "African Society", "Go Africa Go", "West Africa"] 

我想你想要这样的东西

\|(?:(?!Mafrica|\|).)*?africa(?:(?!Mafrica|\|).)*?\|

DEMO

> "|Africa||Africans||African Society||Go Africa Go||Mafricano||Go Mafricano Go||West Africa|".match(/\|(?:(?!Mafrica|\|).)*?africa(?:(?!Mafrica|\|).)*?\|/gi);
[ '|Africa|',
  '|Africans|',
  '|African Society|',
  '|Go Africa Go|',
  '|West Africa|' ]

不要忘记打开i修饰符以进行不区分大小写的匹配。

说明:

\|                       '|'
(?:                      group, but do not capture (0 or more
                         times):
  (?!                      look ahead to see if there is not:
    Mafrica                  'Mafrica'
   |                        OR
    \|                       '|'
  )                        end of look-ahead
  .                        any character except \n
)*?                      end of grouping
africa                   'africa'
(?:                      group, but do not capture (0 or more
                         times):
  (?!                      look ahead to see if there is not:
    Mafrica                  'Mafrica'
   |                        OR
    \|                       '|'
  )                        end of look-ahead
  .                        any character except \n
)*?                      end of grouping
\|                       '|'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM