簡體   English   中英

使用字符串正則表達式或不使用字符串的正則表達式?

[英]To regex with a string or to not regex with a string?

我已經開始在我的java程序中使用.match(Regex)方法,但是現在我只是使用一個字符串( String regexString = new String("[^a-zA-Z0-9][^a-zA-Z0-9]*");這是我到目前為止String regexString = new String("[^a-zA-Z0-9][^a-zA-Z0-9]*");一個例子)。 但我知道我可以使用實際的正則表達式(正則Regex pattern = new Regex() & the Pattern class然后編譯它(?)一些如何)。

在Java中使用Regex作為類而不僅僅是字符串是否有優勢? 我已經習慣於編寫腳本,而正則表達式只是松散意義上的“字符串”,並且沒有能力/需要一個單獨的類,所以我很難看到這里有一個。

我會做你認為最簡單和最清楚的事情。

當正則表達式的性能至關重要時,通常會使用Pattern 如果您尚未對應用程序進行概要分析並且已經證明它是一個問題,那么使用普通String可能會沒問題。

您嘗試用於匹配目的的正則表達式必須在finit狀態機中進行轉換,該狀態機接受與您提供的模式匹配的任何文本。

因此,每次使用正則表達式時,例如在(新的String(“”)。split(“”)表達式中,都會在后台構造一個模式,即一個有限狀態機,它接收一個字符序列。你的字符串並嘗試匹配輸入。

如果你有一個經常使用的正則表達式並且速度是一個真正的問題,那么保持有限狀態機而不是每次構造它都是一個重要的加速。 您可以通過在不同輸出字符串的連續匹配調用之間存儲Pattern對象來實現。

以下內容應提供更多見解: http//en.wikipedia.org/wiki/Finite-state_machine

暫無
暫無

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

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