正则表达式匹配部分字符串和句子片段

时间:2014-10-31 05:49:30

标签: regex

假设我希望将以下内容与正则表达式匹配:

Convert 2g of NaOH into moles.
Convert 3.2 grams of Chlorine into mol.
How many moles are in 67 g of Sodium Chloride?
434 mol of Sodium to Grams. 

要求是:

  • 条款g / grams mol / moles都需要出现在字符串
  • 这些术语必须是独立的,即不是像molecules这样较长的单词的一部分。

我如何使用单个正则表达式匹配所有4个案例?

到目前为止,我已经尝试过这个:

~'mol|g|Grams/g

但它也符合以下条款:

32 mol
gravity of molecule 

1 个答案:

答案 0 :(得分:1)

这个正则表达式需要“mol”/“moles”和“g”/“gram”(允许“g”紧跟一个数字):

/^(?=.*\bmol(es)?\b)(?=.*[^a-z](g|grams?)\b).*/i

使用\b - 字边界 - 确保“分子”和“好”不算作匹配等。

“i”标志使其不区分大小写。

请参阅demo