2013-10-29 38 views
1

我製作一個音節計數器,用下列參數連接單詞用php和正則表達式提前音節計數器

例如:

RES奧盧TIO N =再那麼魯重刑

版本坐在ILE = VER-SA-直到

等靜壓前GY = PE-DA-GO-GY

茶NSU BST螞蟻IAT離子= TRAN-子斯坦-TI-A-灰

雨RIC一個= AME-RI-可以

初步= RU二 - 男性-TA-RY

幾點措施HLI GHT =高光

im使用PHP來編碼它,到目前爲止,即時通訊能夠打破字向下:

<?php 

$string = 'University'; 

preg_replace('/tion|[aeiou]/', "-$0", $string); 

?> 

輸出: 的Un-IV-ERS-兩者均

現在需要做的是讀取例外。規則後 的輸出將被加入到。

  1. 統一
  2. 版本
  3. SI
  4. TY

我將如何改變PHP表達佔所需的規則? Java腳本可能是一個更好的語言?

回答

1

由於將一個單詞分解爲音節並不是可以表達爲「規​​則」的東西,因此正則表達式不是一個好工具(語言無關緊要)。有太多例外!唯一合理的事情就是創建一個解析器。

這就是說,你貼上面的例子,你可以這樣做:

preg_replace('/tion|Uni|ver|si|ty|[aeiou]/', "-$0", $string); 
+0

嘿@alfasin,雖然我試圖讓一個algorithim將看看是否有任何的三個詞各組的有圖案。 –

+1

@ThelsonRichardson您正在尋找的是構建一個解析器,其中將包含包含異常的規則集。你不能使用單一的正則表達式來做到這一點。 – alfasin

+0

基本上:將單詞分解爲三個字符組,然後查看是否有任何組適合單個參數,然後根據參數調整單詞,最後添加preg_replace。在那裏我被困在檢查參數個別三個字母的單詞 –