Как я могу извлечь только начальное описание комментария javadoc и игнорировать теги javadoc с помощью python?

#python #regex #nlp #javadoc

#python #регулярное выражение #nlp #Javadoc

Вопрос:

Я пытаюсь извлечь текст в Javadoc перед тегами Javadoc в python. До сих пор мне удавалось избегать тега parameter, но есть и другие теги Javadoc, которые можно было бы упомянуть все сразу. Есть ли лучший способ сделать это?

 parameterTag = "@param"
if (parameterTag in comments):
        splitComments = subsentence.split(my_string[my_string.find(start)   1: my_string.find(parameterTag)])
  

Ввод:

 
/**
     * Checks if the given node is inside the graph and
     * throws exception if the given node is null
     * @param a single node to be check
     * @return true if given node is contained in graph,
     *         return false otherwise
     * @requires given node != null
     */
    public boolean containsNode(E node){
        if(node==null){
            throw new IllegalArgumentException();
        }
        if(graph.containsKey(node)){
            return true;
        }
        return false;
    }
  

Вывод:

 
/**
     * Checks if the given node is inside the graph and
     * throws exception if the given node is null
         */
    public boolean containsNode(E node){
        if(node==null){
            throw new IllegalArgumentException();
        }
        if(graph.containsKey(node)){
            return true;
        }
        return false;
    }
  

Комментарии:

1. Вы хотите рассмотреть возможность использования регулярных выражений? Я имею в виду, общий формат * @ [буквы] [текст]

2. Конечно! Не могли бы вы сказать мне, как? Я новичок в регулярных выражениях, поэтому, возможно, потребуется дополнительная информация: D Спасибо!

Ответ №1:

Следуя вашей логике, есть часть описания, за которой следует часть «теги», а затем закрывающий комментарий.

Если вы проверяете построчно вхождение ключевого слова tag, вы не сможете работать с этой строкой:

      *         return false otherwise
  

Следовательно, вам нужно определить, вошли ли вы в или вышли из части тегов. Ниже рабочий пример:

 import re

# Javascript content loading
JSF = open("your_js_file.js", 'r')

js_content = JSF.read()

# We split the script into lines, and then we'll loop through the array
lineiterator = iter(js_content.splitlines())

# This boolean marks if we are or not in a "tags" part
in_tags = False

for line in lineiterator:
    # If we matched a line with a word starting with "@",
    # Then we entered into a "tags" section
    if re.search("@w ", line) is not None :
        in_tags = True
    # If we matched a closing comment mark, then we left
    # The "tags" section (or never entered into it)
    if re.search("*/",line) is not None:
        in_tags = False
    if not in_tags:
        print(line)