次のマークアップ入力を検討してください。
* ライン1 * 2行目 :* 行 2.1 :* 2.2行目 * 3 行目
これは通常、次のようにコード化されます。
<ul> <li>1行目</li> <li>2行目</li> <ul> <li>ライン 2.1</li> <li>2.2行目</li> </ul> <li>3行目</li> </ul>
私の質問:
- 単一の線を使用して同じ入力を適切に表現するにはどうすればよいでしょうか?
- 対応する XHTML を生成するための正規表現は何ですか?
たとえば、1 行の入力形式は次のようになります。
> 1号線 > 2号線 >> 2.1号線 >> 2.2号線 > 3号線
順序付けられて>
いないリスト項目の区切り文字です。>
テキストに典型的な句読点が含まれている可能性があるため、選択しました。» (またはその他の非 104 キー キー) を使用すると楽しいですが、入力するのは簡単ではありません。
行入力形式は次のようにもできます。
[1行目][2行目] [2.1行目][2.2行目]][3行目]
更新 #1 - 問題は少し単純です。ネストの数は 3 つに制限できます。nレベルの深さの一般的な解決策は、まだクールです。
更新 #2 - HTML ではなく XHTML。
更新 #3 - 別の可能な入力形式。
更新 #4 - Java ソリューション (または純粋な正規表現) は大歓迎です。
アップデート #5
改訂されたコード:
String in = " * Line 1 * Line 2 > * Line 2.1 * Line 2.2 < * Line 3";
String sub = "<ul>" + in.replace( " > ", "<ul>" ) + "</ul>";
sub = sub.replace( " < ", "</ul>" );
sub = sub.replaceAll( "( | >)\\* ([^*<>]*)", "<li>$2</li>" );
System.out.println( "Result: " + sub );
以下を出力します。
Result: <ul><li>Line 1 </li>* Line 2<ul>* Line 2.1<li>Line 2.2</li></ul>* Line 3