簡體   English   中英

如何在正則表達式中使用前瞻以匹配無字符?

[英]How do I use look-ahead in regex to match on no character?

我在函數中有一組正則表達式,對我來說效果很好,但是我遇到了一個失敗的新模式。 當字符串中沒有其他字符時,此函數將失敗。 例如,我的函數匹配並替換以下文本:“ 1 m is equivalent to... ”變為“ 1 meter is equivalent to... ”但是,它失敗了:“ There are 100 cm in 1 m

我正在使用AS3,我認為它有一個幾乎相當於JavaScript的正則表達式引擎。 目前的模式是:

[0-9]+ m(?= )|[0-9]+m(?= )

我遍歷模式列表和替換字符串,因此很容易將另一個模式添加到列表中。 我試過了:

[0-9]+ m(?=)|[0-9]+m(?=)

和:

[0-9]+ m(?='')|[0-9]+m(?='')

兩者都失敗了。 我錯過了一個基本的知識點。 我相信我需要知道怎么說,“當行中沒有其他角色時,前瞻和匹配”

您可以通過查找單詞邊界( \\b )來簡化表達式; 這樣的事情:

var regex = /(\d+)\s*m\b/;
regex.exec('1 m is equivalent to...'); // => ["1 m", "1"]
regex.exec('There are 100 cm in 1 m'); // => ["1 m", "1"]

'行中沒有其他字符'相當於'在行尾',所以只需使用$元字符

你正在尋找一個由序列\\b表示的單詞邊界。 您可以使用表達式/\\d+\\s*m\\b/

\d+  - one or more digits
\s*  - any number of spaces
m    - a literal 'm'
\b   - a word boundry

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM