1

<p>ユーザーがhtmlページのテキストエリアに入力したものを、それぞれ<p>が新しい行を置き換えるタグ付きの出力に変換したいと思います。

正規表現を試していますが、機能しません。誰かが私の表現を修正しますか?

String = "Hey, this is paragraph 1 \n and this is paragraph 2 \n and this will be paragraph 3"
Regex = r'(.+?)$'

結果としてHey, this is paragraph 1 \n and this is paragraph 2 \n<p>and this will be paragraph 3</p>

4

5 に答える 5

2

必要がないという理由だけで、正規表現は使用しません。これをチェックしてください:

text = "Hey, this is paragraph 1 \n and this is paragraph 2 \n and this will be paragraph 3"
html = ''
for line in text.split('\n'):
   html += '<p>' + line + '</p>'

print html

短い方が良いので、1行にするために、次のようにします。

html = ''.join('<p>'+L+'</p>' for L in text.split('\n'))
于 2012-10-06T20:50:30.513 に答える
1

私はそれをこのようにします:

s = "Hey, this is paragraph 1 \n and this is paragraph 2 \n and this will be paragraph 3"
"".join("<p>{0}</p>".format(row) for row in s.split('\n'))

基本的に、文字列を行のリストに分割します。次に、各行を段落タグで囲みます。最後に、あなたのラインに参加するだけです。

于 2012-10-06T20:49:40.660 に答える
1

'\ n'の識別に依存する上記の回答は、確実に機能しません。を使用する必要があります.splitlines()。選択した回答にコメントするのに十分な担当者がいないため、Wikiを編集したときに、誰かがそれを元に戻しました。それで、より多くの担当者がいる誰かがそれを修正してください。

aからのテキストは、textarea改行文字として'\ r\n'を使用できます。

>> "1\r\n2".split('\n') 
['1\r', '2']

「\r」だけではWebページ内では無効であるため、上記のソリューションのいずれかを使用すると、不適切な形式のWebページが生成されます。

幸いなことに、Pythonはこれを解決する関数を提供します。確実に機能する答えは次のとおりです。

html = ''.join('<p>'+L+'</p>' for L in text.splitlines())
于 2014-06-19T10:25:21.150 に答える
0

とても簡単>>

html='<p>'+s.replace("\n",'</p><p>')+'</p>'
于 2012-10-07T00:16:58.650 に答える
0

アンカーを取り除く必要があります$正規表現は、1つ以上の改行以外の文字と、それに続く文字列の終わりを一致させようとしています。MULTILINEモードを使用して、次のようにアンカーを線の境界で一致させることができます。

s1 = re.sub(r'(?m)^.+$', r'<p>\g<0></p>', s0)

...しかし、これも同様に機能します:

s1 = re.sub(r'.+', r'<p>\g<0></p>', s0)

気が進まない数量詞(.+?)も有用なことは何もしていませんでしたが、アンカーのように出力を台無しにすることはありませんでした。

于 2012-10-06T22:43:46.800 に答える