Execute a operation by regular expression for element only.

        :param element: The element.
        :type element: hatemile.util.html.htmldomelement.HTMLDOMElement
        :param regular_expression: The regular expression.
        :type regular_expression: str
        :param data_property_value: The value of custom attribute used to
                                    identify the fix.
        :type data_property_value: str
        :param operation: The operation to be executed.
        :type operation: function

def _speak_as(
        self,
        element,
        regular_expression,
        data_property_value,
        operation
    ):
        """
        Execute a operation by regular expression for element only.

        :param element: The element.
        :type element: hatemile.util.html.htmldomelement.HTMLDOMElement
        :param regular_expression: The regular expression.
        :type regular_expression: str
        :param data_property_value: The value of custom attribute used to
                                    identify the fix.
        :type data_property_value: str
        :param operation: The operation to be executed.
        :type operation: function
        """

        children = []
        pattern = re.compile(regular_expression)
        content = element.get_text_content()
        while content:
            matches = pattern.search(content)
            if matches is not None:
                index = matches.start()
                children = operation(content, index, children)

                new_index = index + 1
                content = content[new_index:]
            else:
                break
        if children:
            if content:
                children.append(self._create_content_element(
                    content,
                    data_property_value
                ))
            while element.has_children():
                element.get_first_node_child().remove_node()
            for child in children:
                element.append_element(child)