StringUTILSまたは正規表現を使用してこれを解析する方法 -- java フィールド と regex フィールド 関連 問題

How can i parse this using StringUtils or Regular Expression












1
vote

問題

日本語

現在

の問題に直面しているIM <事前> <コード> <a href="<a href="http://www.freeformatter.com/xml-formatter.html#ad-output" target="_blank">http://www.freeformatter.com/xml-formatter.html#ad-output</a>">Links</a>

は私が使っているサービスから返されています。ご覧のとおり、これは無効なHTMLではありません。誰かが私がこれに変更するために内部タグを削除するのを助けることができるツールまたは正規表現を知っていますか:

<事前> <コード> <a href="http://www.freeformatter.com/xml-formatter.html#ad-output">Links</a>

編集: サービスは常にFreeFormatter.comのWebサイトを返します。それは任意のウェブサイト

を返すことができます
英語

Im currently facing the issue where

<a href="<a href="http://www.freeformatter.com/xml-formatter.html#ad-output" target="_blank">http://www.freeformatter.com/xml-formatter.html#ad-output</a>">Links</a> 

Is being returned from a service I am using. As you can see this is NOT valid html. Does anyone know any tools or regular expressions that can help me remove the inner tag to change it to this:

<a href="http://www.freeformatter.com/xml-formatter.html#ad-output">Links</a> 

EDIT: The service does not always return freeformatter.com website. It could return ANY website

</div
     
       
       

回答リスト

1
 
vote
vote
ベストアンサー
 

タグ内のURLまたはコンテンツが変更された場合、おそらくより一般化されたパターンを使用する必要があります。

<事前> <コード> ...../register/8

これは本質的にあなたが2つのグループに望む文字列の部分をキャプチャします。その後、1つの文字列に再組み立てできます。これが実用的な例です:

http://ideone.com/tbovva

 

If the URL or content within the tags changes you'll want to use a more generalized pattern perhaps:

(<a\shref="\w.+")\s.+>"(.+</a>) 

This essentially captures the portions of the string you want into two groups; which can then be reassembled into one string. Here's a working example:

http://ideone.com/TbOvVa

</div
 
 
 
 
0
 
vote

Java:

<事前> <コード> ...../register/9

(プログラムのどういうわけかどうかにかかわらず保存する必要がある)

それから:

<事前> <コード> /0

この処理のすべての後に正しいrefを持つことになるでしょう。

 

In Java:

String s = "<a href="<a href="http://www.freeformatter.com/xml-formatter.html#ad-output" target="_blank">http://www.freeformatter.com/xml-formatter.html#ad-output</a>">Links</a>; 

(You'll need to save it as a String somehow in your program)

Then:

s = s.replace("<a href="", ""); String[] pcs = s.split("http://www.freeformatter.com/xml-formatter.html#ad-output</a>">"); s = pcs[0] + pcs[1]; s = s.replace(" target="_blank"", ""); 

You would have the right ref after all this processing.

</div
 
 
 
 
0
 
vote

最初のA href = "をつかみます.SUBSTRING(0,8) その後、.SPLIT( ""&gt; "、1)を使用し、index 1で結果の配列を使用します。

 

grab the first a href=" with .substring(0,8) then use .split("">",1) and use the resulting array at index 1.

</div
 
 
0
 
vote

溶液1

括弧<コード> () でキャプチャされている正規表現のグループ化機能を単に使用します。 Matcher.group() メソッドを使用してマッチしたグループを取得します。

&gtの間のすべての出現を見つけます。そして&lt;そしてあなたの必要性に従ってそれを結合します。

これは、正規表現パターン<コード> >([^">].*?)< です。 debuggex と regex101

パターン説明:

<事前> <コード> . Any character (may or may not match line terminators) [^abc] Any character except a, b, or c (negation) X*? X, zero or more times (Reluctant quantifiers) (X) X, as a capturing group

についてもっと読む
  • real="nofollow noreferrer"> Java RegXパターン< / a>

  • 正規表現グループ

    をキャプチャしています

サンプルコード:

<事前> <コード> String string = "<a href="<a href="http://www.freeformatter.com/xml-formatter.html#ad-output" target="_blank">http://www.freeformatter.com/xml-formatter.html#ad-output</a>">Links</a>"; Pattern p = Pattern.compile(">([^">].*?)<"); Matcher m = p.matcher(string); while (m.find()) { System.out.println(m.group(1)); }

出力:

<事前> <コード> http://www.freeformatter.com/xml-formatter.html#ad-output Links

溶液2

String#replaceAll() methodを使用して

を使用して試してください。

Pattern:末尾と </a> のすべてを二重引用符で囲まれていない </a> を置き換えます。

regex101 と debuggex

この正規表現パターンの絵画表現:

イメージの説明を入力します

サンプルコード:

<事前> <コード> Matcher.group()0

出力:

<事前> <コード> Matcher.group()1

 

Solution 1

Simply use the grouping feature of the regex that is captured by parenthesis (). Get the matched group using Matcher.group() method.

Find all the occurrence between > and < and combine it as per your need.

Here is the regex pattern >([^">].*?)<. Have a look at the demo on debuggex and regex101

Pattern description:

.       Any character (may or may not match line terminators) [^abc]  Any character except a, b, or c (negation) X*?     X, zero or more times (Reluctant quantifiers) (X)     X, as a capturing group 

Read more about

  • Java Regex Pattern

  • Regex Groups and capturing

Sample code:

String string = "<a href="<a href="http://www.freeformatter.com/xml-formatter.html#ad-output" target="_blank">http://www.freeformatter.com/xml-formatter.html#ad-output</a>">Links</a>";  Pattern p = Pattern.compile(">([^">].*?)<"); Matcher m = p.matcher(string);  while (m.find()) {     System.out.println(m.group(1)); } 

output:

http://www.freeformatter.com/xml-formatter.html#ad-output Links 

Solution 2

Try with String#replaceAll() method using (</a>)[^$]|([^^]<a(.*?)>) regex pattern.

Pattern says: Replace all the </a> that is not in the end and <a.*?> that is not in the beginning with the double quotes.

Find demo on regex101 and debuggex

Pictorial representation of this regex pattern:

enter image description here

Sample code:

String string = "<a href="<a href="http://www.freeformatter.com/xml-formatter.html#ad-output" target="_blank">http://www.freeformatter.com/xml-formatter.html#ad-output</a>">Links</a>";  System.out.println(string.replaceAll("(</a>)[^$]|([^^]<a(.*?)>)", """)); 

output:

<a href="http://www.freeformatter.com/xml-formatter.html#ad-output">Links</a> 
</div
 
 

関連する質問

5  DFA - >正規表現  ( Dfa regular expression ) 
私は紙にDFAを書いて、それを正規表現のセットに翻訳したいです。誰もがこれを行うための良いツールを知っていますか? ...

1  正規表現のマッチング文字を除く  ( Excluding matching characters in regular expression ) 
私は正規表現の問題で立ち往生しています。 私は一致する必要がある文字列を持っています。文字列は常に2文字で始まり、次に6桁の数字、e.g。 EF123456 AB123456 しかし、無視する必要がある文字の組み合わせが1つあります。 e.g。: ...

11  木構造のための正規表現?  ( Regex for tree structures ) 
ツリー構造を検索して変更するための正規表現はありますか?簡潔なミニ言語(Perl Regexなど)が私が探しているものです。 これは私が探しているものを明確にするかもしれない例です。 <事前> <コード> <root> <node name="1"> ...

2  括弧で囲まれていないC#コードにすべてのIFステートメントを見つけたいです。正規表現を通して  ( I want to find all if statements in c sharp code which are not followed by brack ) 
すべての if ステートメントと for ステートメントを見つけたいと思います。 if ステートメントに1行を書くと、ほとんどカーリーブラケットに囲まれているため、それらすべての if および for ステートメント。 助けてください! この文をキャプチャし...

30  C ++で使いやすい正規表現のサポート[閉まっている]  ( Easy to use regular expression support in c ) 
この質問はスタックオーバーフローガイドラインを満たしていません。現在答えを受け付けていません。 この質問を改善したいですか? ...

59  PREG_REPLACEをPHPで使用するときは、一致する方法がありますか?  ( How can i get at the matches when using preg replace in php ) 
私は単語の大文字をつかみ、それらをスパンタグで包み込もうとしています。 preg_replace を使用していますが、抽出目的では何も出力していません。 。 <事前> <コード> preg_replace("/[A-Z]/", "<span class="i...

6  PythonのReモジュールを使用して1回の急増で任意の順序付けられていないグループのセットを取得することが可能ですか?  ( Possible to retrieve an arbitrary unordered set of named groups in one swoop wit ) 
これはいくつかの問題に対してスーパーハンディーです: <事前> <コード> >>> re.search('(?P<b>.b.).*(?P<i>.i.)', 'abcdefghijk').groupdict() {'i': 'hij', 'b': 'abc'} ...

49  正規表現:文字列内の2つのタグ間のサブストリングを引き出す  ( Regex to pull out a sub string between two tags in a string ) 
私は次の形式でファイルを持っています: <前> データデータ データ [始める] データ私が欲しいデータ [終わり] データ <コード> [Start] [End] タグの間から Data I want を正規表現を使用してつかみたいと思います。誰かが...

2  単語または句のインスタンスを見つけるための正規表現 - その単語やフレーズが中括弧である場合を除く  ( Regex to find instance of a word or phrase except if that word or phrase is i ) 
最初の免責事項。私は正規表現について少し知っていますが、私は専門家ではありません。彼らは私が一年に2回、私が本当に2回必要なものであるようですので、私の脳の「上に」しないでください。 状況:特定の単語を一致させるために正規表現を書いて、それを「osttric...

1  Perl:正規表現を使用してテキストからデータを抽出する  ( Perl extracting data from text using regex ) 
Perlを使用して正規表現でテキスト処理を行います。入力を制御していません。以下の入力の例をいくつか示しました。 項目BとCは、値が異なる文字列n回になることができます。私はすべての値を背面参照として取得する必要があります。それとも私はすべての耳です。 ブ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有