簡體   English   中英

Java Regex用於正式邏輯格式

[英]Java Regex for formal Logic format

我希望將字符串與形式邏輯中的表達式格式匹配,其中兩個字母字符通過v | ^ |> | =進行操作,其中字符可以以〜|!|?開頭,並且這些字符可以被方括號括起來,然后再加上〜|!|?。 起初,我認為可以使用以下表達式:

 s.matches("^[!?~]*[(]*[!?~]*[a-z]{1}\\s[v>=^]{1}\\s[!?~]*[a-z]{1}[)]*$")

但是,我已經意識到這些表達式可以相互堆疊,而且我不知道如何在正則表達式中說明。

可接受的匹配示例:

〜PVQ

〜?(p ^〜r)

p!

pv〜(!r ^ t)

〜!(p =(〜!q ^ t))

可以根據需要添加任意多個運算符,以創建一個非常長的表達式。 如何以常規格式使用正則表達式解決這個問題?

謝謝堆:)

您不能使用簡單的正則表達式完全描述該語言。 問題是任何字母都可以用表達式替換。 您需要遞歸正則表達式,而Java的java.util.regex包不支持這些正則表達式。

據我所知,此功能始於Perl 4左右,並出現在一些宣傳“ Perl兼容正則表達式”(PCRE)的軟件包中。 它不是標准Java,Python,Ruby,C ++的一部分,而且我也不認為C#,VB.Net,C ++ / CLI等的.NET庫也有它。

暫無
暫無

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

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